Content-Type: multipart/related; start=<op.mhtml.1252603162149.2ae452252e184736@192.168.1.100>; boundary=----------O8tSTdebgUpFsTdPeOUg4a
Content-Location: http://www.spoj.pl/problems/ARMY/
Subject: =?utf-8?Q?Sphere=20Online=20Judge=20(SPOJ)=20-=20Problem=20ARMY?=
MIME-Version: 1.0

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=default.htm
Content-Type: text/html; charset=iso-8859-2; name=default.htm
Content-ID: <op.mhtml.1252603162149.2ae452252e184736@192.168.1.100>
Content-Location: http://www.spoj.pl/problems/ARMY/
Content-Transfer-Encoding: 8bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Sphere Online Judge (SPOJ)  - Problem ARMY</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" id="metatag">
<META NAME="Keywords" CONTENT="programming, language, algorithm, spoj, contest, contester, Java, C#, Pascal, C, C++, python, ruby, caml, ocaml, perl, haskell, lisp, prolog, fortran, assembler, asembler, functional, online, judge, problem, problemset, ACM">

<link href="/gfx/favicon.png" rel="shortcut icon" type="image/x-icon">
<link href="/rss/" rel="alternate" type="application/rss+xml" title="RSS Feed">
<link href="/style.css" rel="stylesheet" type="text/css" id="theme">
<link href="/themes/tooltips.css" rel="stylesheet" type="text/css" id="theme">
<script type='text/javascript' src='/gfx/jquery.js'></script>
<style type="text/css">
<!--
.maintable {width: 100%;} 
-->
</style>
<script type="text/javascript" language="javascript">
<!--
function UnCryptMailto(s) {
	var n=0;
	var r="";
	for(var i=0;i<s.length;i++) {		
		n=s.charCodeAt(i); 
		if (n>=8364) {n = 128;}
		r += String.fromCharCode(n+(2));	
	}
	return r;
}
function linkTo_UnCryptMailto(s)	{
	location.href=UnCryptMailto(s);
}
// -->
</script>

</head>
<body>
<center>
<table cellpadding="10" cellspacing="0" class="maintable" id="maintable">
<tr>
    <td colspan="2" class="header">
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr>
		<td class="headerleft"/>
		<td class="headercenter">
<h1><IMG alt="Sphere Online Judge" title="Sphere Online Judge" src="/gfx/sphere-spoj-small.png" border=0 style="margin-top:-4px;margin-bottom:-4px"></h1>
		</td>
		<td class="headerright"/>
	</tr>
	</table>
    </td>
</tr>
<tr><td class="menu" width="92" valign="top">


<div class="menucmd"><a href="/logout"><b style="font-weight:normal">Log Out</b></a><br><b style="font-weight:normal; margin-right:-100px">dncampo</b><br><hr><a href="/myaccount">my account</a><br><a href="/tutorials">tutorials</a><br><br><a href="/status">status</a><br><a href="/submit">submit</a><br><a href="/problems/classical/">problems</a><br><a href="/search">search</a><br><br><a href="/">news</a><br><a href="/contests">contests</a><br><a href="/ranks/">ranks</a><br><br><a href="/forum">forum</a><br><a href="/comments">comments</a><br><a href="/credits">credits</a><br><hr></div><a href="/problems/classical/"></a><br>

	<div class="time">
Server time:</div>
<div class="time">
2009-09-10
<br>
<b>17 : 31 : 05</b>
</div>

</td>
<td style="padding:0px" valign="top" class="content0">
        <table width="100%" cellpadding="0" cellspacing="0">
        <tr>
                <td style="padding:0px;" colspan="2"><center>
                                
                </center></td>
        </tr>
        <tr>
                <td class="content" width="99%" style="padding: 10px">
	<script type='text/javascript' src='/gfx/jquery.bgiframe.js'></script>
<script type='text/javascript' src='/gfx/jquery.tooltip.js'></script>
<script type='text/javascript' src='/gfx/jquery.cxhelp.js'></script>


	 <!-- wykorzystywane w pcontent.html (by wiele) -->
	
	<table class="problems" width="100%">
	<tr class="navigation">
			<td><a href="/submit/ARMY/">Submit</a></td>
			<td><a href="/status/ARMY,dncampo/">My submissions</a></td>
		<td><a href="/status/ARMY/">All submissions</a></td>
	<td><a href="/ranks/ARMY/">Best solutions</a></td>
	<td><a href="/problems/ARMY.ps">PS</a></td>
	<td><a href="/problems/ARMY.pdf">PDF</a></td>
	<td><a href="/problems/classical/">Back to list</a></td>
	</tr>
	</table>

	<div class="prob">


	<!-- plik z pomoca kontekstowa (cxhelp_*) dziedziczony po pindex.html -->


<table width="100%" style="margin-top:10px">
<tr>
	<td>
		<h2>SPOJ Problem Set (classical)</h2>
		<h1>2727. Army Strength</h1>
		<h2>Problem code: ARMY</h2>
	</td>
	</tr>
</table>

<p align="justify">
<p>The next MechaGodzilla invasion is on its way to Earth. And once again, Earth will be the battleground for an epic war.

<p>MechaGodzilla's army consists of many nasty alien monsters, such as Space Godzilla, King Gidorah, and MechaGodzilla herself.

<p>To stop them and defend Earth, Godzilla and her friends are preparing for the battle.</p>

<h3>Problem specification</h3>

<p>Each army consists of many different monsters. Each monster has a strength that can be described by a positive integer. (The larger the value, the stronger the monster.) 

<p>The war will consist of a series of battles. In each battle, the weakest of all the monsters that are still alive is killed. 

<p>If there are several weakest monsters, but all of them in the same army, one of them is killed at random. If both armies have at least one of the weakest monsters, a random weakest monster of MechaGodzilla's army is killed. 

<p>The war is over if in one of the armies all monsters are dead. The dead army lost, the other one won. 

<p>You are given the strengths of all the monsters. Find out who wins the war.</p>

<h3>Input specification</h3>

<p>The first line of the input file contains an integer T specifying the number of test cases. Each test case is preceded by a blank line. 

<p>Each test case starts with line containing two positive integers NG and NM &#8211; the number of monsters in Godzilla's and in MechaGodzilla's army. Two lines follow. The first one contains NG positive integers &#8211; the strengths of the monsters in Godzilla's army. Similarly, the second one contains NM positive integers &#8211; the strengths of the monsters in MechaGodzilla's army.</p>

<h3>Output specification</h3>

<p>For each test case, output a single line with a string that describes the outcome of the battle. 

<p>If it is sure that Godzilla's army wins, output the string "Godzilla". 

<p>If it is sure that MechaGodzilla's army wins, output the string "MechaGodzilla".

<p>Otherwise, output the string "uncertain".</p>

<h3>Example</h3>
<pre><b>input:</b>
2

1 1
1
1

3 2
1 3 2
5 5

<b>output:</b>
Godzilla
MechaGodzilla
</pre>
<h3>Hint</h3>
<p>In the first test case, there are only two monsters, and they are equally strong. In this situation, MechaGodzilla's monster is killed and the war ends.

<p>In the second test case, the war will consist of three battles, and in each of them one of Godzilla's monsters dies.

<p>For all the test cases, <b>int</b> in C/C++/Java or <b>longint</b> in Pascal is enough.</p>

<hr>
<table border=0 cellspacing=0 cellpadding=0 align=left style="margin-bottom:10px" class="probleminfo">
<tr><td>Added by:</td><td><a href="/users/john_jones">Blue Mary</a></td></tr>
<tr><td>Date:</td><td>2008-05-24</td></tr>
<tr><td>Time limit:</td><td>1s-2s</td></tr>
<tr><td>Source limit:</td><td>50000B</td></tr>
<tr><td>Languages:</td><td>All except: C99 strict </td></tr>
<tr><td>Resource:</td><td>IPSC 2008</td></tr>
	
</table>
	<div id="ccontent">
	
<hr style="clear:both;"/>
<a href="#" onclick="toggleComments(); return false;"><span id="comments_sh">hide</span> comments</a><br/>

<a id="comments"></a>
<table id="comments_table" width="100%">
		<tr>
		<td colspan="2">
				</td>
	</tr>
	
	<script language="JavaScript">
	<!--
	$(document).ready(function(){
        $('.pager_link').bind('click', function(me){
                var href=$(me.currentTarget).attr('href');
		$('#ccontent').animate({opacity: 0.5},1);
                $.ajax({
                        type: "GET",
                        url: href+",ajax=1",
                        contentType: "application/x-www-form-urlencoded;charset=ISO-8859-2",
                        success: function(data){
                                $('#ccontent').html(data);
				$('#ccontent').animate({opacity: 1.0},1);
                        },
                        error: function(err){
                                alert('error');
                        }
                });
                return false;
        });
	});
	-->
	</script>
	

			
	<tr>
		<td colspan="2" class="comm comm_odd ">
		<font >
		2009-08-16 22:23:32 <b><a href="/users/majid_yaghoubi">majid yaghoubi</a></b> 
		</font>
								<br/>
				Scanner is too slow for this problem!
						</td>
	</tr>
				
	<tr>
		<td colspan="2" class="comm comm_even ">
		<font >
		2009-08-08 09:38:14 <b><a href="/users/rabiee">Ali Rabiee</a></b> 
		</font>
								<br/>
				cin and cout are too slow for this problem!
						</td>
	</tr>
				
	<tr>
		<td colspan="2" class="comm comm_odd ">
		<font >
		2009-07-09 17:50:21 <b><a href="/users/dr3w">Drew Saltarelli</a></b> 
		</font>
								<br/>
				Godzilla's a chick?!
						</td>
	</tr>
				
	<tr>
		<td colspan="2" class="comm comm_even ">
		<font >
		2009-07-03 20:49:01 <b><a href="/users/indranil_iem">Indranil Bhattacharya</a></b> 
		</font>
								<br/>
				nice story!!!
						</td>
	</tr>
			
</table>


<script language="javascript" type="text/javascript">
<!--
function getCookieVal (offset) {
        var endstr = document.cookie.indexOf (";", offset);
        if (endstr == -1) { 
                endstr = document.cookie.length; 
        }
        return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg) {
      return getCookieVal (j);
      }
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
    }
  return null;
}

function toggleComments() {
        var a = document.getElementById('comments_table');
        var d = a.style.display;
        if( d == "" || d == "block" ){
                d = "none";
                document.getElementById('comments_sh').innerHTML = 'show';
        } else {
                d = "block";
                document.getElementById('comments_sh').innerHTML = 'hide';
        }
        a.style.display = d;
        document.cookie="comments_table="+d+"; path=/;";
}

if( GetCookie('comments_table') == 'none' ){
        document.getElementById('comments_sh').innerHTML = 'show';
        document.getElementById('comments_table').style.display = 'hide';
}

-->
</script>


	</div>
	<table width="100%">
                <tr>
                <td colspan="2" height="20px"></td>
        </tr>
        <form method="post" action="/comment/ARMY/add/">
        <tr> <td style="padding-left:5px;" colspan="2">Leave a Comment</td> </tr>
        <tr>
                <td valign="top"></td>
                <td><textarea name="content" cols="40" rows="3"></textarea></td>
        </tr>
                <tr>
                <td colspan="2" style="padding-left: 5px;">
                        <input type="submit" value="Publish"/>
                        <input type="hidden" name="pcode" value="ARMY"/>
                </td>
        </tr>
<tr>
<td colspan="2" class="smallgrey" style="padding-left:5px;">
Notes:
<br>1. Don't post any source code here.
<br>2. Please be careful, leave short comments only. Don't spam here.
<br>3. For more discussion (hints, ideas, solutions) please visit our <a href="/forum">forum</a>.
<br>4. Authors are allowed to delete the post and use html code here (e.g. to provide some useful links).
</td>
</tr>
        </form>
        </table>

	</div>
        </td>
<tr>
        <td style="padding:0px" colspan="2"><center>
                
</center></td>
</tr>
</table>
</td>
</tr>

<tr>
<td colspan="2" class="footer">

<script language="javascript" type="text/javascript">
<!--
function swapSheet(sheet, caller) {
    document.getElementById('theme').href=sheet;
    document.cookie="css_0="+sheet+"; path=/;";
    caller.href="#bottom";
}

function setWidth(w, caller) {
    document.getElementById('maintable').style.width=w;
    document.cookie="res="+w+"; path=/;";
    caller.href="#bottom";
}
//-->

</script>
        <table width="100%">
    <tr>
	<td align="left" width=10% class="cfooter">
	<a href="/info/">About SPOJ</a>
	</td>
	<td align="center" class="cfooter">
	    page size:
	    <a href="/?rsl=755px"  onClick="setWidth('755px', this)">800x600</a>
	    <a href="/?rsl=980px"  onClick="setWidth('980px', this)">1024x768</a>
	    <a href="/?rsl=100%" onClick="setWidth('100%', this)">Full</a>
	    &nbsp;&nbsp;
	    theme:
	    <a href="/?css=/themes/skin1.css" onClick="swapSheet('/themes/skin1.css', this)">olive</a>
	    <a href="/?css=/themes/skin2.css" onClick="swapSheet('/themes/skin2.css', this)">banana</a>
	    <a href="/?css=/themes/skin3.css" onClick="swapSheet('/themes/skin3.css', this)">plum</a>
	</td>
		<td align="center" class="cfooter">
		 <span title="The discussion channel of the Sphere Online Judge community.">
		 <a href="irc://irc.freenode.net/spoj"><b>#spoj</b> at freenode</a>
		 </span>
	</td>
		<td width=10% class="cfooter" style="text-align:right">
		<a href="/rss/" ><img src="/gfx/rss10x10.gif" border=0>&nbsp;RSS</a>&nbsp;
	</div>
	</td>
    </tr>
    </table>
    </tr></table>
</center>
<div style="font-size:10px; margin-top:4px; color: rgb(85,80,95);"><center>
<a href="http://www.spoj.pl" style="color:black">SPOJ</a>
System &copy; 2008-2009
<a href="http://sphere-research.com" style="color:black">Sphere Research Labs</a>. 
All Rights Reserved.</center></div>


<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-10507872-1");
pageTracker._trackPageview();
} catch(err) {}</script>


</body>
</html>
------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=favicon.png
Content-Type: image/png; name=favicon.png
Content-Location: http://www.spoj.pl/gfx/favicon.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAADAFBMVEUEAoSEhrRE
QpzExsxkYqSkprwkIozk5txMUpy0tsRscqwsMpSUlrzU1tT09twUEoRcWqR0eqys
qtQ8OpRMSpzExuTk5vS0ttyMisQsKpTs7tyUlszMzsxkaqysrsRUUqx0crw0MpzU
1uwcGowMCoSMjrSkpsS8vsycnrz8/vxcWqx8frxMSqREQqTEysxkYrQkJpTk6txU
UqR0dqw0NpT0+uQUEox8frS0stw8Ppy8vtwsLpzs8tzk4vSkqsQEBoSMirRERpxk
ZqQkJoy8usx0cqw0MpScmrzc4tT0+txcXqR8eqysrtQ8PpRMTpzMzuS8utyUksws
LpSkotTM0tRsbqxUVqx0drw0Npzc2uwcHowMDoSMkry8wsykorxcXqxMTqTMyszs
6txUVqQUFoz08tysqsQAAHf/YEP/Y7f/UNP/AHf/kAD/4wD/EgD/AAAAEKAA4JwA
00UAdwAAnnoABAQAIBMAAAAAIAwAAAAVAAAAAADAsBLiBJ8SKoAAAHxiAUAJAGeC
ABl8AgAgAQBjAAAVAAAAAADbsQcFiwCC0wB8dwDAaAB2AABQ2QAAdwAgJABj42AB
EhkAAABs2AAA4wAAEgAAAAD84gDhyAASAAAAAAAA2AAA4wAAEgAAAAD4gwD3KgAS
ggAAfAAYABjuAJ+QAIB8AHxwAP8FAP+RAP98AP//ABL/AJ//AID/AHxtKSEFtwCR
kgB8fABKQCH2ZwCAGQB8AAAAvkgAPusVghIAfAAA//8A//8A//8A//8gAABjAAAV
AAAAAAAAvAQB4+UAEhIAAAAAvr4APjsAgkwAfABX+OT29+SAEhJ8AADoGHfj7hAS
kE8AfAAgABhjt+UVkhIAfADj/77q/z6Q/4J8/3zsQKniZ+USGRIAAAA4vt0APv8A
gv8AfH84AIgA5eUAEhIAAAAC3UAAP2cAghkAfAABFr4APz4AgoIAfHycAUAVAGew
ABmvAAAwMeIAAMgAMAAAAAAAoAAAnAAARQAAAABAbOmT5M55EkcAAACluW9YAAAB
AHRSTlP//////////////////////////////////////////////////////wD/
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////kY7DTQAAAT9JREFUeNo9kOtOwkAQhY8g1kZZ
EJGbKCgQLGLSCAspgdQIFFZuxlgFGiFgy/s/grM0uD82M1/Onpk90PZnvL5zXCM/
8zvI611H4XfUjzsw7g8wD0sVXHDGBwUz5kMbR4xLKITInGIsYRJN6ofn/VF5G+be
tNEhuKyTrhypBzfPjs34NlLVEEOPC3YClSwtm0xKWODrhIQKcEGO6g3VGTMF/Zgk
rABMHoYsK2urgmKN05uQCcCMDuUSUwONGqOKfb66hGkm4/EnpKOcs16QC0/9ALK0
bHqNypKUoYBcPwsEBd/SoCR2BPFCdIMuPW+aHWj6mcdvu8u33aprhTlTnBz9qAVb
tDOsPBj8kIU3cRMykEfYHt8nwoQSMFt+dNdFfdWWVClF3OQh5JmFiDGNX5rIJf6T
17Sr7+p8nkst/O4P3cZH42xIaIkAAAAASUVORK5CYII=

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline
Content-Type: text/css; charset=iso-8859-2
Content-Location: http://www.spoj.pl/themes/common.css
Content-Transfer-Encoding: 8bit

@import "/gfx/jquery-ui-1.7.1.custom.css";

ul.ads_manager_contests{
	margin: 10px;
	padding: 0px;
}
	
ul.ads_manager_contests li{
	display: inline;
}

div.problem_sub{
	border: 1px solid grey;
	max-height: 120px;
	overflow-y: scroll;
	width: 250px;
	padding: 5px;
}
div.problem_sub ul{
	margin: 5px;
	padding: 0px;
}
div.problem_sub ul li{
	display: inline;
}

#op_window_sourcecode{
	border: 0px;
	width: 100%;
	height: 100%;
}
#op_window{
	display: none;
}
element.style {
height:323px;
min-height:73px;
width:auto;
}

.ui-dialog .ui-dialog-titlebar-resize { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 20 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-resize span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-resize:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }

table.probleminfo td {
	padding-right: 10px;
}
------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline
Content-Type: text/css; charset=iso-8859-2
Content-Location: http://www.spoj.pl/gfx/jquery-ui-1.7.1.custom.css
Content-Transfer-Encoding: Quoted-Printable

/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt=
) licenses.
*/

/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-he=
ight: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; cle=
ar: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: =
absolute; opacity: 0; filter:Alpha(Opacity=3D0); }


/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }


/* Icons
----------------------------------*/

/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; back=
ground-repeat: no-repeat; }


/* Misc visuals
----------------------------------*/

/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; h=
eight: 100%; }

/*
* jQuery UI CSS Framework
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt=
) licenses.
* To view and modify this theme, visit http://jqueryui.com/themeroller/?=
ffDefault=3DVerdana,Arial,Helvetica,sans-serif&fwDefault=3Dnormal&fsDefa=
ult=3D13px&cornerRadius=3D10px&bgColorHeader=3Da0a0a0&bgTextureHeader=3D=
01_flat.png&bgImgOpacityHeader=3D100&borderColorHeader=3D999999&fcHeader=
=3D222222&iconColorHeader=3D222222&bgColorContent=3Dffffff&bgTextureCont=
ent=3D01_flat.png&bgImgOpacityContent=3D75&borderColorContent=3Daaaaaa&f=
cContent=3D222222&iconColorContent=3D222222&bgColorDefault=3De6e6e6&bgTe=
xtureDefault=3D02_glass.png&bgImgOpacityDefault=3D75&borderColorDefault=3D=
d3d3d3&fcDefault=3D555555&iconColorDefault=3D888888&bgColorHover=3Ddadad=
a&bgTextureHover=3D02_glass.png&bgImgOpacityHover=3D75&borderColorHover=3D=
999999&fcHover=3D212121&iconColorHover=3D454545&bgColorActive=3Dffffff&b=
gTextureActive=3D02_glass.png&bgImgOpacityActive=3D65&borderColorActive=3D=
aaaaaa&fcActive=3D212121&iconColorActive=3D454545&bgColorHighlight=3Dfbf=
9ee&bgTextureHighlight=3D02_glass.png&bgImgOpacityHighlight=3D55&borderC=
olorHighlight=3Dfcefa1&fcHighlight=3D363636&iconColorHighlight=3D2e83ff&=
bgColorError=3Dfef1ec&bgTextureError=3D05_inset_soft.png&bgImgOpacityErr=
or=3D95&borderColorError=3Dcd0a0a&fcError=3Dcd0a0a&iconColorError=3Dcd0a=
0a&bgColorOverlay=3Daaaaaa&bgTextureOverlay=3D01_flat.png&bgImgOpacityOv=
erlay=3D0&opacityOverlay=3D30&bgColorShadow=3Daaaaaa&bgTextureShadow=3D0=
1_flat.png&bgImgOpacityShadow=3D0&opacityShadow=3D30&thicknessShadow=3D8=
px&offsetTopShadow=3D-8px&offsetLeftShadow=3D-8px&cornerRadiusShadow=3D8=
px
*/


/* Component containers
----------------------------------*/
.ui-widget { font-family: Verdana,Arial,Helvetica,sans-serif; font-size:=
 13px; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget but=
ton { font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 1em; }=

.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(=
images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222=
; }
.ui-widget-content a { color: #222222; }
.ui-widget-header { border: 1px solid #999999; background: #a0a0a0 url(i=
mages/ui-bg_flat_100_a0a0a0_40x100.png) 50% 50% repeat-x; color: #222222=
; font-weight: bold; }
.ui-widget-header a { color: #222222; }

/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px so=
lid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.=
png) 50% 50% repeat-x; font-weight: normal; color: #555555; outline: non=
e; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visit=
ed { color: #555555; text-decoration: none; outline: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .u=
i-widget-content .ui-state-focus { border: 1px solid #999999; background=
: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; =
font-weight: normal; color: #212121; outline: none; }
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decora=
tion: none; outline: none; }
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px soli=
d #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.pn=
g) 50% 50% repeat-x; font-weight: normal; color: #212121; outline: none;=
 }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited =
{ color: #212121; outline: none; text-decoration: none; }

/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px=
 solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x4=
00.png) 50% 50% repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color:=
 #363636; }
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #=
cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.=
png) 50% bottom repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a=
; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #=
cd0a0a; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35=
; filter:Alpha(Opacity=3D35); background-image: none; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-wei=
ght: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opac=
ity: .7; filter:Alpha(Opacity=3D70); font-weight: normal; }

/* Icons
----------------------------------*/

/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-ic=
ons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_22222=
2_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222=
_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_88888=
8_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: ur=
l(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_=
256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83=
ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-imag=
e: url(images/ui-icons_cd0a0a_256x240.png); }

/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }


/* Misc visuals
----------------------------------*/

/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 10px; -webkit-border-top-lef=
t-radius: 10px; }
.ui-corner-tr { -moz-border-radius-topright: 10px; -webkit-border-top-ri=
ght-radius: 10px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 10px; -webkit-border-bott=
om-left-radius: 10px; }
.ui-corner-br { -moz-border-radius-bottomright: 10px; -webkit-border-bot=
tom-right-radius: 10px; }
.ui-corner-top { -moz-border-radius-topleft: 10px; -webkit-border-top-le=
ft-radius: 10px; -moz-border-radius-topright: 10px; -webkit-border-top-r=
ight-radius: 10px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 10px; -webkit-border-=
bottom-left-radius: 10px; -moz-border-radius-bottomright: 10px; -webkit-=
border-bottom-right-radius: 10px; }
.ui-corner-right {  -moz-border-radius-topright: 10px; -webkit-border-to=
p-right-radius: 10px; -moz-border-radius-bottomright: 10px; -webkit-bord=
er-bottom-right-radius: 10px; }
.ui-corner-left { -moz-border-radius-topleft: 10px; -webkit-border-top-l=
eft-radius: 10px; -moz-border-radius-bottomleft: 10px; -webkit-border-bo=
ttom-left-radius: 10px; }
.ui-corner-all { -moz-border-radius: 10px; -webkit-border-radius: 10px; =
}

/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_=
40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=3D30); }=

.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aa=
aaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacit=
y: .30;filter:Alpha(Opacity=3D30); -moz-border-radius: 8px; -webkit-bord=
er-radius: 8px; }/* Accordion
----------------------------------*/
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative=
; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important;=
 }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; p=
adding: .5em .5em .5em 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: =
.5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0;=
 margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; ove=
rflow: auto; display: none; }
.ui-accordion .ui-accordion-content-active { display: block; }/* Datepic=
ker
----------------------------------*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0=
; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next {=
 position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-=
next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-n=
ext span { display: block; position: absolute; left: 50%; margin-left: -=
8px; top: 50%; margin-top: -8px;  }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8e=
m; text-align: center; }
.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; =
margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month, =

.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: r=
ight; }
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: col=
lapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight:=
 bold; border: 0;  }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .=
2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margi=
n: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-b=
ottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: =
.5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:aut=
o; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { =
float:left; }

/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 au=
to .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { b=
order-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {=
 border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }

/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }=

.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }=

.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-curren=
t { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { bor=
der-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { b=
order-right-width:0; border-left-width:1px; }

/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
    display: none; /*sorry for IE5*/
    display/**/: block; /*sorry for IE5*/
    position: absolute; /*must have*/
    z-index: -1; /*must have*/
    filter: mask(); /*must have*/
    top: -4px; /*must have*/
    left: -4px; /*must have*/
    width: 200px; /*must have*/
    height: 200px; /*must have*/
}/* Dialog
----------------------------------*/
.ui-dialog { position: relative; padding: .2em; width: 300px; }
.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: =
relative;  }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } =

.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; =
top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; =
}
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px;=
 }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titleb=
ar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background=
: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0=
 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em=
 .4em; }
.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4e=
m .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.=
4em; width:auto; overflow:visible; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bot=
tom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/* Progressbar
----------------------------------*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/* Re=
sizable
----------------------------------*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 9999=
9; display: block;}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-=
resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px;=
 left: 0px; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5=
px; left: 0px; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; h=
eight: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; he=
ight: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: =
1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5p=
x; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5p=
x; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5=
px; top: -5px;}/* Slider
----------------------------------*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.=
2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size:=
 .7em; display: block; border: 0; }

.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em=
; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }

.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; mar=
gin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs
----------------------------------*/
.ui-tabs { padding: .2em; zoom: 1; }
.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .=
2em .2em 0; }
.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-botto=
m-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; }
.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding=
: .5em 1em; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-=
bottom-width: 0; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui=
-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { curs=
or: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li=
.ui-tabs-selected a { cursor: pointer; } /* first selector in group seem=
s obsolete, but required to overcome bug in Opera applying cursor: text =
overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-wid=
th: 0; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://www.spoj.pl/gfx/sulcorner.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAABcRAAAX
EQHKJvM/AAAACXRFWHRDb21tZW50AACJKo0GAAAAXklEQVR4nGP49vMBMrp4+VJ9
4yYHx5lq6v1y8j1AkoGhASdC1tnQtElCohOfaqyaP3+77+s3jwRtcM1k6oRoBrqW
HJ1ABAwh0vyJjIBhS6ZOIALGCvmaKdA5qpmumgH/VsVlhL/ugwAAAABJRU5ErkJg
gg==

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline
Content-Type: image/png
Content-Location: http://www.spoj.pl/gfx/surcorner.png
Content-Transfer-Encoding: Base64

iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAABcRAAAX
EQHKJvM/AAAACXRFWHRDb21tZW50AACJKo0GAAAAXklEQVR4nGNgYGjAhdTU++Xk
e4Ckg+PM+sZNFy9f+vbzATJiwKMZDUlIdDY0bSJTMwT5+s37/O0+mZqR9ZOjGYgg
7idTM9D/wPAjUzMQAcOffM3A+CNfMxiNaqafZgB9RMVl4Y0ntQAAAABJRU5ErkJg
gg==

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.spoj.pl/gfx/ulcorner.png
Content-Transfer-Encoding: Base64

/9j/2wCDEABZAD0AQwBOAEMAOABZAE4ASABOAGQAXgBZAGkAhQDeAJAAhQB6AHoA
hQEQAMIAzQChAN4BQgEbAVMBTQE8ARsBNwExAWMBkAH/AbEBYwF5AeMBfwExATcB
vAJdAcIB4wIPAiACPAJBAjwBWAGrAnMCoAJuAisCmgH/AjECPAIl/9sAgxEAXgBk
AGQAhQB1AIUBBQCQAJABBQIlAW4BNwFuAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIl
AiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIl
AiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJf/BABEIAGAAIAMBIgACEQEDEQH/
xAAWAAEBAQAAAAAAAAAAAAAAAAAAAwT/xAAhEAEAAgEEAQUAAAAAAAAAAAAAAQID
BBEhMRITMkFRcf/EABYBAQEBAAAAAAAAAAAAAAAAAAACAf/EABYRAQEBAAAAAAAA
AAAAAAAAAAABEf/aAAwDAQACEQMRAD8A1I5tRXHxHNjUZfTptHunph77VJopfNkv
3afyE95+wWxTUX88tp+I4hMnmZAAAAAAAAAAAAAAAAAAAf/Z

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline
Content-Type: image/jpeg
Content-Location: http://www.spoj.pl/gfx/urcorner.png
Content-Transfer-Encoding: Base64

/9j/2wCDEABZAD0AQwBOAEMAOABZAE4ASABOAGQAXgBZAGkAhQDeAJAAhQB6AHoA
hQEQAMIAzQChAN4BQgEbAVMBTQE8ARsBNwExAWMBkAH/AbEBYwF5AeMBfwExATcB
vAJdAcIB4wIPAiACPAJBAjwBWAGrAnMCoAJuAisCmgH/AjECPAIl/9sAgxEAXgBk
AGQAhQB1AIUBBQCQAJABBQIlAW4BNwFuAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIl
AiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIl
AiUCJQIlAiUCJQIlAiUCJQIlAiUCJQIlAiUCJf/BABEIAGAAIAMBIgACEQEDEQH/
xAAXAAEBAQEAAAAAAAAAAAAAAAAAAwQF/8QAIRABAAEDAwUBAAAAAAAAAAAAAAEC
AzEEESESEzJBUXH/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQID/8QAFhEBAQEAAAAA
AAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwDLvP1Si9coxVP5KY6o3WdRTc4nipZy
8YbtPd7lG0+UZYsxWEBtBTT19F2mfU8SmRmAAAAAAAAAAAAAAAAAf//Z

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=style.css
Content-Type: text/css; charset=iso-8859-2; name=style.css
Content-Location: http://www.spoj.pl/style.css
Content-Transfer-Encoding: 8bit

@import "/themes/common.css";

/* general esthetics */
body {
	background: #EEEEEE;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 13px;
	color: #000020;
}

h3 { 
	font-size: 17px;
	font-weight: bold;
}	

h4 { 
	font-size: 16px;
	font-weight: bold;
}	

td, ul, p, th { 
	font-size: 13px;
}	

small {
	font-size: 12px;
}

a {
    text-decoration: none;
    color: #0000A0;
}

a:hover, a:active {
    color: #B01010;
}

/* comments */
.comm{
	padding: 5px;
	padding-bottom:20px;
}
.comm_odd {
	background: #E8EDD0;
}
.comm_even {
	background: #F6F9E0;
}

.status_sm {
	font-size: 11px;
}

/* news_problems */
#news_problems {
        padding-left: 0.5em;
	margin-left: 0.5em;
	border-left: 1px dotted grey;
}
#news_problems li{
	list-style: none;
}


.kol {
	background-color: #F09A24;
}

.kol0 {
	background-color: #C0C0C0;
}

.kol1 {
	background-color: #BAE0A0;
}

.kol2 {
        background-color: #88DE5F;
}

.kol3 {
	background-color: #00C030;
}

.row {
    background-color: #D0D0D0;
}

.headerrow {
	background-color: #000080;
	color: #FFFFDD;
}

.headerrow a, .headerrow a:active {
	color: #DDDDFF;
}

.headerrow a:hover {
	color: #FFFFFF;
}

.headerrowleft {
	background-image:url(/gfx/sulcorner.png);
	background-repeat:no-repeat;
	background-position: top left;
}

.headerrowright {
	background-image:url(/gfx/surcorner.png);
	background-repeat:no-repeat;
	background-position: top right;
}

.problemrow {
    background-color: #D0D0D0;
}

.lightrow {
    background-color: #E0E0E0;
}

.send {
	text-align: center;
	vertical-align: top;
	font-size: 13px;
}

.form {
	font-size: 12px;
}

.formerror {
	font-size: 13px;
	color: red;
}

.button {
	font-size: 12px;
}


/* elements of the main table */
.maintable {
	color: #000020;
	border: 0px #000000; 
}

.header {
	border: 0px; 
	padding: 0px;
}

.headerleft {
	text-align: left;
	background-image:url(/gfx/ulcorner.png);
	width: 32px;
	border: 0px;
}
	
.headerright {
	text-align: right;
	background-image:url(/gfx/urcorner.png);
	width: 32px;
	border: 0px;
}

.headercenter {
	text-align: center;
	border: 0px;
	padding-top: 8px;
	padding-bottom: 8px;
	background: #000080;
}

.header H1 {
	color: #FFFFFF;
	text-align: center;
	font-size: 26px;
	font-weight: normal;
	margin-top: 0px;
	margin-bottom: 0px;
}

.footer {
	border: 0px;
	border-bottom: solid 1px #6060A0;
	text-align: center;
	font-size: 13px;
	padding-left: 5px;
	padding-right: 5px;
	padding-top: 3px;
	padding-bottom: 3px;
}

.cfooter {
	border: 0px;
	text-align: center;
	font-size: 11px;
}

.footer img {
	vertical-align: text-bottom;
	border: 0px;
}

.menu {
	border: 0px;
	padding-left: 12px;
	padding-right: 10px;
	background-color: #E8EDD0;
	vertical-align: top;
	font-size: 12px;
	font-weight: normal;
}

.menu hr {
	width: 88px;
	text-align: left;
	margin-top: 5px;
	margin-bottom: 5px;
	
}

.menucmd {
	font-size: 13px;
	font-weight: bold;
}

.submenucmd {
	font-size: 12px;
	padding-left: 5px;
	margin-left: 5px;
	margin-top: 3px;
	margin-bottom: 3px;
	border-left: 1px #C3C6F8 solid;
}

.time {
	font-size: 10px;
	color: rgb(85, 80, 95);
}

.smallgrey {
	font-size: 10px;
	color: rgb(85, 80, 95);
}

.grey {
	font-size: 13px;
	color: rgb(85, 80, 95);
}

.newsbody {
	font-size: 13px;
	text-align: justify;
	padding-bottom: 8px;
}

.newsdate {
	font-size: 10px;
	font-weight: normal;
	text-align: left;
}

.newstitle {
	font-size: 13px;
	font-weight: bold;
	text-align: center;
	background-color: #E8EDD0;
}	

.newsauth {
	font-size: 10px;
	font-weight: italic;
	text-align: right;
}

.content0 {
	background-color: #F6F9E0;
	border-right: 1px solid #E8EDD0;
}
.content {
	border-top: 0px;
	background-color: #F6F9E0;
	text-align: center;
	vertical-align: top;
	height: 350px;
	font-size: 13px;
}

.navigation {
	vertical-align: top;
	background-color: #E8EDD0;
		color: #A0A0A0;
	margin-bottom: 10px;
	font-size: 13px;
}

.navigationcenter {
	text-align: center;
	color: #603000;
	font-size: 12px;
	font-weight:bold;
}

.navigationcenter a {
	font-weight:normal;
}

.userdetails {
	text-align: left;
	vertical-align: top;
	font-size: 13px;
}

.accountedit {
	text-align: left;
	font-size: 14px;
}


/* problems */
.problems {
	color: #000020;
	text-align: center;
	vertical-align: top;
	border: 0px;
}

.problems td, .problems th {
	border: 0px;
}

.problem {
	text-align: center;
	vertical-align: top;
	font-size: 13px;
	height: 400px;
	width:100%;
}

.tekst {
	text-align: center;
	vertical-align: top;
	font-size: 13px;
}

.mini {
	font-size: 9px;
}

.slang {
	font-size: 9px;
}
	
.slang:first-line {
	font-size: 13px;
}

.prob h1 {
	font-size: 20px;
	font-weight: normal;
	text-align: center;
}

.prob h2 {
	font-size: 16px;
	font-weight: normal;
	text-align: center;
}

.prob h3 {
	font-size: 15px;
}

.prob h4 {
	font-size: 14px;
}

.prob p {
	text-align: justify;
}

.prob address {
	font-size: 13px;
	font-style: italic;
}

.prob pre {
	font-size: 13px;
	text-align:left;
}

.prob ol, .prob ul {
	text-align: justify;
}

/* search */
.title {
	font-size: 14px;
	text-align: justify;
	font-weight: bold;
	margin-top: 18px;
	margin-bottom: 2px;
	margin-left: 10px;
	margin-right: 10px;
}

.description { 
	text-align: justify;
	margin-top: 2px;
	margin-bottom: 2px;
	margin-left: 10px;
	margin-right: 10px;
}
.metadata {
	font-size: 10px;
	color: green;
	text-align: left;
	margin-left: 10px;
	margin-right: 10px;
}
.metadata a {
	color: green;
}

.highlight {
	background : #FFFF99;
}

.searchheader {
	background-color: navy;
	color: #FFFFFF;
	margin-left: 10px;
	margin-right: 10px;
}

.searchheader td {
	color: #FFFFFF;
}

.searchheader a, .searchheader a:active {
	color: #DDDDFF;
}

.searchheader a:hover {
	color: #FFFFFF;
}

.searchheader table {
	width: 95%;
}

.searchfooter {
	background-color: navy;
	color: #FFFFFF;
	margin-left: 10px;
	margin-right: 10px;
	margin-top: 15px;
	margin-bottom: 5px;
}

.searchfooter td {
	color: #FFFFFF;
}

.searchfooter a, .searchfooter a:active {
	color: #DDDDFF;
}

.searchfooter a:hover {
	color: #FFFFFF;
}

.searchfooter table {
	width: 95%;
}

.searchfooter img {
	vertical-align: text-bottom
}

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=tooltips.css
Content-Type: text/css; charset=iso-8859-2; name=tooltips.css
Content-Location: http://www.spoj.pl/themes/tooltips.css
Content-Transfer-Encoding: 8bit


/* context help message */
.cxitem {
        display: none;
}

/* tooltip */
#tooltip {
        margin:0;
        padding:0;
        width:350px;
        background:#F8F8F8;
        border:1px solid #d2d2d2;
        line-height:130%;
        opacity: 0.95;
        position: absolute;
        z-index: 3000;
}
#tooltip2 {
        background:#F8F8F8;
        border:1px solid #d2d2d2;
        opacity: 0.95;
        position: absolute;
        z-index: 3000;
}
#tooltip2 div {
        padding: 3px;
}
#tooltip div {
        margin-bottom: 10px;
        padding:3px;
}
#tooltip div.cxtitle, #tooltip2 div.cxtitle{
        background-color: #000080;
        color: #F4F4F4;
        font-weight: bold
}

/* context help link */
a.cxhelp {
        background-color: #489857;
        color: #F0F0F0;
        font-weight: bold;
        text-decoration: none;
}
a.cxhelp:HOVER {
        color: white;
        background-color: green;
}


------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=jquery.js
Content-Type: application/x-javascript; charset=iso-8859-2; name=jquery.js
Content-Location: http://www.spoj.pl/gfx/jquery.js
Content-Transfer-Encoding: Base64

LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDov
L2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2ln
CiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2Vz
LgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTog
MjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICog
UmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwu
alF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJu
IG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8
XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBl
PXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBl
KXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4g
dGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYo
RyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNl
e3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQh
PUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRl
eHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBv
KEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhk
b2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhp
cy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0
dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkp
fSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0Fy
cmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFj
azpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztH
LmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9
dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihI
KXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1
cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5w
cm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1
bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0
aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMp
fSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0
cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRo
aXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5j
dGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixv
LnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lm
KChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1n
fXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihG
KXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5l
bXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxk
b2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0
aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigp
e2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5u
b2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFs
bDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25l
ckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNl
cnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3do
aWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBl
bmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1
cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBB
bGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lm
KHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBl
bmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1
ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJl
Zm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0
aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVu
Y3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4
dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmpl
Y3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5z
cGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBG
PXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChF
LHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2so
by51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUs
Ryl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5t
YXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNY
TUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10
aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRD
aGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4g
by5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2cs
IiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xv
bmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioi
KS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0
aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12
YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2
YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pd
LmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVy
biB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1
bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIo
RSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9
KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHBy
Lm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFw
KGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQp
e2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2Vz
dCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rp
b24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1
cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5v
dCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5n
dGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5m
aWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRo
aXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhv
LnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9v
KEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFF
JiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0
aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24o
Syl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShF
LCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNp
ZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2
YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09
InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STow
LEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVj
dGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1
cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVy
biBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5p
c0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhp
cy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5
KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVj
dCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2go
ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxO
KT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgp
e3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxo
dG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlu
bmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIp
Om51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0
aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlv
bihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigp
e3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBw
bHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0
dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1
cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0
aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0s
TCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhp
c1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlz
WzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lm
KEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEso
dGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6
SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4s
Tyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShP
LCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFw
cGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIp
KSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYp
e2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlw
ZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29u
dGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERh
dGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVu
dHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5
cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1p
Zih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlm
KEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNb
SF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYo
Sj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFM
Lm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1td
Ont9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIg
Yj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWln
aHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4k
PXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlv
bihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNB
cnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJy
YXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05
JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVy
RG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZh
bDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0Uu
dHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7
RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtF
LnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVD
aGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5h
bWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxl
YWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtp
ZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Up
e2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09
ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsu
Y2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIg
Sj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1y
ZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlv
bihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYm
Rz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRk
OmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0
aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNs
YXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9
fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xh
c3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVu
Y3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAi
KToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwo
Ri5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3
YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0Zd
PUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYg
aW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lm
KEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJz
b2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9
PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0
aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdo
dDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lm
KCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1
ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhI
LCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1
ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5v
ZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1h
dGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0s
Y3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9w
YWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHki
KTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31p
ZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxl
KXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8o
W0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRl
ZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYo
Rj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5
bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1
cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJy
ZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVz
dChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRp
bWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1F
LnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319
fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7
aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3du
ZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1p
ZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIg
SD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNy
ZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVt
ZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09
Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3Ry
aW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24o
VSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxs
aW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+
In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50
b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxl
Y3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhP
ZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0
Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxl
PiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0
Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8
IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90
cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0
YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3Rh
YmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIs
IjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hp
bGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3Zh
ciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFS
P0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0
YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7
TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hp
bGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01d
KX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3Qo
Uykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxz
Ki8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVz
KX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19
KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pd
LCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgp
PT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0db
Sl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdb
Sl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0
KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIp
KSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRy
OmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlw
ZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgm
Jm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5
bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBh
cmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtp
ZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2Rl
KXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31p
ZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXty
ZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFi
SW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0
dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1
dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5h
bWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119
aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0
cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIi
K0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRB
dHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/
ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtK
Lnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwo
W14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9w
YWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5k
ZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgv
b3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0o
W2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0p
O2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1
cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1
bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lm
KEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8
Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19
fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9
SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4g
LTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYo
IW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcu
bm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1u
dWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIg
Rj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3Zh
ciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0dd
KX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7
dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9
IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9u
KEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2
YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJu
IEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdl
bnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4r
KD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2Fm
YXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6
L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxs
YS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVh
Y2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJl
bnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5l
eHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0s
cHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxp
bmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNp
YmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJl
dmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNp
YmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0
aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6
ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250
ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJh
eShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9u
KEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmci
KXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51
bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBl
bmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVy
OiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYp
e28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0w
LEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUp
OnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0
KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1v
dmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9k
ZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVu
Y3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1
bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFz
czpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNs
YXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUi
XSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUs
W3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVu
Y3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9
KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5y
ZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQo
dGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBq
KEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVl
KSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtj
YWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZb
aF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVb
SF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hl
W0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3Zh
ciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1b
RV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1v
dmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5y
ZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5j
YWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngi
KSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkp
e0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2go
SCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVl
dWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihG
IT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihF
LEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYo
Rz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0r
IiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlz
WzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNl
e3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEdd
KS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0
YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1v
dmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2Yg
RSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1
ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1v
LnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5j
YWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6
bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIw
MDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBN
SVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246
IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/
OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18Wyci
XVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xb
Pit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
Zzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3Vt
ZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119
aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxX
LGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4
ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJp
Z2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZiha
Lmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUp
fWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hp
bGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVou
c2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3Ao
KSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJl
bnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIs
YWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hp
bGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZl
W2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUku
cmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7
dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIiso
YWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7
YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9y
KHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09
PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1
c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsr
KXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFd
KX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFz
RHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3Io
dmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFd
KXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVu
Y3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0
aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9
MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtp
ZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250
ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8
IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9
bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZigh
Wil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4
cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxh
aT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZh
Yy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hb
YWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9
ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5w
cmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVs
c2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFm
PWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFl
PVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtY
XT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihh
aCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwi
Iik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwp
e3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr
YWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3Jz
PXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdc
dTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1c
dUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMw
LVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAw
YzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwz
fClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykv
LENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxv
ZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0
fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/
Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15c
KV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNs
YXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0
aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6
eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIs
YWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1Vw
cGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYo
KFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5
cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09
PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixV
LGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3Qo
VSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0
aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTta
W1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9
Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJl
bnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVl
KX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRj
aCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJl
bnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwr
KyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3Zh
ciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5n
IixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVv
ZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdl
dEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rp
b24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVm
aW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3Io
dmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRl
KCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09
PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcs
VSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYo
YWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtp
ZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmlu
ZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09
ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsx
XS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBW
PTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06
VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0i
bnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJd
PT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3Qo
VFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0w
O1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgs
VSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJ
LmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtY
WzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxW
LFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4x
fHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxz
ZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2gu
YXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVz
dChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19
cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJu
IFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2Fi
bGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlv
bihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24o
VCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQp
e1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09
dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0s
ZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5j
dGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1
bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1
bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24o
VCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7
cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1
cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJw
YXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3Vi
bWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09
PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlw
ZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxU
Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rp
b24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0
KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXty
ZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1X
Lmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9k
ZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUs
VCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+
VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVx
OmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VV
RE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07
aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIp
e3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2Yo
VlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBX
PTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNl
fX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFd
LFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUu
cHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNl
fX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGls
ZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFs
c2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYo
Vj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnRO
b2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIg
WD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUu
bm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFy
IGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3Jl
dHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVy
biBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6
ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxV
Lm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhV
LmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhP
ZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJI
YW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdl
dEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVs
bD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49
MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1m
YWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09
PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9a
PT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6
ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtp
ZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9y
KHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10u
c291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9
ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lm
KFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJy
YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxb
XTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5
cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51
bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhb
Vl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1y
ZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBh
cmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7
aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4
IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2
YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1
cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJh
bmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0
ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVj
dE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xs
YXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5T
VEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVy
biBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJI
VE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgs
WSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYh
Wil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09
WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZX
LmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106Zzpb
XX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0
QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUo
ImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9
fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5s
ZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9y
KHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2go
WFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwv
YT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRy
aWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgi
aHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1
cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1Qn
PjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxs
KCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcp
e1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5
e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJl
dHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVy
O0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgp
fWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24o
KXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRN
TD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48
L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09
PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVy
LnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixX
KXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5l
ZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19
KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlv
dXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKysp
e3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpj
YWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lm
KFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVU
eXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVO
YW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhV
LFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7
Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYo
VCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9
V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkp
e1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMp
e1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIp
e2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0p
Lmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRv
Y3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0
dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUs
VCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUp
fTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9j
dW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVu
dCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIg
Vz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0
Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2gu
UFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxV
PVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihY
LFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3Rv
cnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVy
cy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxU
Lm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1m
dW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdo
dD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3Jl
dHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVs
ZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUp
e1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1
bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50
KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtv
Lm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1Y
W1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07
by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0
U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1
cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlv
bihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1
cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3Vp
ZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7
SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZl
bnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUi
LGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2
ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2Fs
bGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQo
L1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlm
dCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05d
O2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05d
LnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQu
c3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8p
PT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3Rl
bmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2
ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10
cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihL
LEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZh
ciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBl
b2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGlu
IEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9
SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlv
bihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdF
eHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxc
LnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtm
b3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0
ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNw
ZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2Jy
ZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNp
YWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZl
bnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhh
bmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZl
bnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdb
T119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywi
aGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50
cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9u
KEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJv
YmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7
aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5l
eGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlz
Lmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2
ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5o
YW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBl
PT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJh
eShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRh
KEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5v
ZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitH
XS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0dd
JiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYm
Rz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRj
aChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25T
dG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lm
KEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rp
b24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2
ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4i
KTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFy
IEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwu
IikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5
cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5
cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhp
cyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7
Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJ
bW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJh
bHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxh
YmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJn
ZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtl
eUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdl
WSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNj
cmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcg
d2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYo
SFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRo
aXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltK
XX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9
aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVu
dE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxh
dGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50Okgu
ZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2
YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gu
cGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVm
dHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkku
c2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1p
ZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFy
Q29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1p
ZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYo
IUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0
dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0
aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlk
Kys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1
bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUs
Ril7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihH
KXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsi
KFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9
KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwx
KXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5j
dGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2
ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50
eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0
aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24g
dSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVs
dDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhp
cy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVs
dCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQ
cm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9
dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0
b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJs
ZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlz
LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFn
YXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3Bw
ZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5j
dGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7
dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7
Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50
cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1v
dXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0
dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246
ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0
ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhp
cy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRo
aXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5l
dmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7
cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1
bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7
by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxG
KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUs
Rix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNb
MF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFBy
b3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4g
Ri5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9
MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1
cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5s
YXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVs
dCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3Vt
ZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlz
Lm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7
QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFk
eUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3Zh
ciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhk
b2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixF
KTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5i
aW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVj
dG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9
UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtv
LmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEks
Sil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3Qo
Si5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29y
dChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iikt
by5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtp
Zih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNl
KXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3Jl
dHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2cs
InwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlz
dDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10
cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24o
KXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9j
dW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtm
dW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRF
dmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250
ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28u
cmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2Rv
Y3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9u
KCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50
LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxs
ZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9T
Y3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVy
bn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9
Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1v
LnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5l
YWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNr
LGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIs
bW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3Vi
bWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1
bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJp
bmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1
bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVb
RV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVt
KX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIp
LEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3
IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJI
VE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxl
PSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0
PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48
L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwh
RSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENo
aWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0
Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxo
dG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxl
bmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxo
cmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFj
aXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5j
c3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1v
ZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7Iikp
fWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtK
XSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92
ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFj
aEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZl
bnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxl
ZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1
bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5z
dHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9
TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5z
dHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxv
YXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxG
b3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5
bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5n
dGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIs
dGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9h
ZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXty
ZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0w
KXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBI
PSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNl
e2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19
fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwi
LGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8
TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0u
cmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9n
LCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00u
cmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1
bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0s
c2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1l
bnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYm
IXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEv
aS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2Vh
cmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBH
PW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/
by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJ
fX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWph
eFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nl
c3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1
bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5l
eHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykp
e0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRh
Okcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUs
Ril7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5j
dGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVu
Y3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1
cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRh
dGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWph
eFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGds
b2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gt
d3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVl
LHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2
ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0
KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRt
bDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRp
b24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZh
c2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RN
b2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8u
ZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygm
fCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnBy
b2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBh
cmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIp
e2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8i
JiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5k
YXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYi
OiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNv
biJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2go
Ril8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00u
ZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51
cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtX
XT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1dd
fWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlw
ZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5j
YWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJl
cGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUr
KChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToi
Iil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8v
KT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFj
dGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3
KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0i
c2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90
b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0
KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtU
Lm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYo
IXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhp
cy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxv
YWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19
SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnho
cigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2Vy
bmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRy
eXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixN
LmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRl
cigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRo
dSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVy
KCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVl
c3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5
cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVm
YXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEos
TSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy
aWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmds
b2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1
bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZh
bChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRy
aWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRl
PT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQ
KTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNz
KEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0u
dXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3Ry
eXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNl
cmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3Bv
bnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2Rp
ZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxz
ZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0u
YXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwo
TiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihK
JiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRh
dGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5
bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixS
KX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0os
TV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIp
fWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0os
TV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJh
amF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUs
Ryl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZl
bnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBT
dWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlv
bi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMw
MCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1
cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIg
SD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcu
c3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1
cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJl
c3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYm
Ri5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNl
VGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJy
b3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcu
ZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJz
Y3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwi
XSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9
W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVu
dChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8
RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52
YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkp
e28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5p
c0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYi
KS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQi
LCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGlu
Z0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJw
YWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlv
biB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xp
Y2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4
dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1h
dGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5n
dGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0
aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlz
cGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0dd
KXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9k
eSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9
SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEsp
fX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5
bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1
cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5h
bmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMu
bGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5
Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5
IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMu
bGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0
dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihH
LEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rp
b24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxh
cmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9
RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRl
Il0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpm
dW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxF
LEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixI
LEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0o
ZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlw
ZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtp
ZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNv
bXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYm
dGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92
ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwp
e3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5k
KHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixL
LE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUi
P0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5t
YXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8
MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQ
IT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVl
KSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMTox
KSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0p
O3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVy
cztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3Io
dmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtp
ZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRl
cXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93
IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIs
MSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlk
ZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4g
dGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24o
RyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8
IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZI
fHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6
dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3Bl
ZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNv
bXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Up
e28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xk
LmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24o
RyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXty
ZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJz
OltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09
Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJv
dG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7
dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9
KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMp
O2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0
aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9
fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwm
JighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09
bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZs
b2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0x
MDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkp
fHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0
aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwi
cHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3Zh
ciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10
aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRl
cnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5s
ZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxl
bmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9u
KCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVt
LnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1
c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTow
LHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24o
KXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0u
c3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3Vz
dG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lm
KEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhp
cy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRl
KCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRy
dWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9w
dGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMu
b3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9
dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRo
aXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIp
PT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRo
aXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0
aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMu
b3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5v
cHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlz
LmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7
dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVh
c2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5n
IjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0
aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkq
dGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChv
LmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3Rl
cDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFj
aXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHls
ZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnBy
b3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7
aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3Rv
cDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5i
b2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10
aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRv
Y3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRv
cHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8
MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9s
bFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8
fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVy
bnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYo
IXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlz
WzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZz
ZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRp
YWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5v
d25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8u
ZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zm
c2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkoh
PT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNj
cm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9w
LEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYh
KG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJs
ZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVy
VG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEw
KXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNC
b3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJs
ZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNl
SW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09
PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRU
b3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1N
YXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5z
Y3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8u
b2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXpl
ZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9
JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJn
aW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDto
ZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0
aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNv
bGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBh
ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3Rh
YmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2lu
OjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6
ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRN
TD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGls
ZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJz
dENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0
aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09
PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0i
cmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNp
YmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0
aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRv
cD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlz
LmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZz
ZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9m
ZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVk
ZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy
Z2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFy
Z2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5m
bi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0
aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQo
KSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVm
dDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVm
dC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lk
dGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9w
LUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVu
dDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVu
dC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUp
JiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJl
bnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9u
KEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0
aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0
aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8o
bCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9
KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zm
c2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5l
YWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/Ikxl
ZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgp
O28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3Nz
KHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitH
XT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFs
c2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2Fz
ZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1l
bnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhp
c1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNl
dCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09
Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhK
LHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs=

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=sphere-spoj-small.jpeg
Content-Type: image/jpeg; name=sphere-spoj-small.jpeg
Content-Location: http://www.spoj.pl/gfx/sphere-spoj-small.png
Content-Transfer-Encoding: Base64

/9j/2wCDEAAsAB4AIQAnACEAHAAsACcAJAAnADIALwAsADUAQgBvAEgAQgA9AD0A
QgCIAGEAZgBQAG8AoQCNAKkApgCeAI0AmwCYALEAxwD/ANgAsQC8APEAvwCYAJsA
3gEuAOAA8QEHAQ8BHQEgAR0ArADVATkBTwE2ARUBTAD/ARgBHQES/9sAgxEALwAy
ADIAQgA6AEIAggBIAEgAggESALcAmwC3ARIBEgESARIBEgESARIBEgESARIBEgES
ARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgESARIBEgES
ARIBEgESARIBEgESARIBEgESARIBEgESARIBEv/BABEIACwBWQMBIgACEQEDEQH/
xAAaAAEAAwEBAQAAAAAAAAAAAAAAAQMEBQIG/8QAMhAAAgICAAQDBgUFAQEAAAAA
AQIAAwQRBRIhMRNBUSIyNGFxchQzNZHBFUKBsfBS0f/EABgBAQEBAQEAAAAAAAAA
AAAAAAABAgME/8QAIxEBAQEAAgEBCQAAAAAAAAAAAAERAjEhQQMSEzJCUWFxsf/a
AAwDAQACEQMRAD8A5URN3DcIZDF7Py1Pb1M9Vsk2ssldVlv5aM30G56fGvrG3qcD
11Ow2WFvGLi1qzDofJRJvyr8VOa2lWX1Rux+c5+/fsrgxOvn4S2U+PSvK2tso85y
JvjynKBERNIRNttNa8MqsCgOW0T+8xSS6EREoREQEREBERAREQEREBETbxOmumys
VqFBXrqTfODFE0MuP+EVg58ffUTPEuhERKEREBETRUuOcew2ORaPdAktwZ4iJQiI
gIm1qa/6WtvKOfm7/wCZikl0IiJQiIgIiICfRcPULhVAeY3PnZ3OE3izG8Mn2k/1
OXteljDk134eW1yA6JJDa2OvkZcvE0vrNWTXpWGiyy7AzQQar20wJ5Wb+4fWUcUS
hmQUBTaT1CecndywdVOXw15TtddD6icLHQDiQTQIDkTrI34PAU2nqi9vn6Tj4JLZ
1ZPctsycJ4o135iY2Q1dVCa37ZI6mUcTpSu1HrAC2DehL8rh735LPW6lWPtb/tlP
FLFaxK0OxWNbl45swaFtSnhdLugfR9kHtvrPDuubgWWNWq2VnuJ4v/R6Pv8A/sYf
6bk/95Rnr+RXw3HW+8lxtUG9es2VvdZb4duIBSenu9pl4Xctd7K55Q41v5y44ufz
kC8lf/XOY5d+RiyKhTlNWOwbp9J0s3IrxLAEpUuw2SR5Tl2BheQz85DaLb3uauMf
FJ9g/wBmas2yUeMClcnKJceyNsR/E2JZc9orfDAoJ17vaZOF3LVkEOdBxrfzl7Yu
fzkLeSvk3PM8u/Iw5dQoyXrXsD0lMsvDC5w787A6Lb3uVzrOkdNmTh+PVy1q1rjZ
LeUOUzcKy01qltfcr5z1dV+PxqnpYF0GmUmeWUYODYjsDbb00PScf6qvhKq91gYA
jk85djZdd14xxQgqboOnWVcH/Os+z+ZRw/42r6/xNWbaK8isVZFiDsrECa+Mfm1f
ZM+d8Zb900cY/Nq+yX1gixV/o9baG+bvr5meuGLWasg2LtQBv6dZFn6NV9/8mOG/
DZf2fwZL8t/YuxclMt2oelFQj2dDtOfXTz5Ip3/dy7l/CfjB9plS2CrP8Q9lsO/3
lky2QdC1raH8PHxA1Y7kjvMvE6VqsR0XlDjZX0M05NWVbZ4mNcTW3YB9amHMS2t1
W63nbW/e3qZ4djNN+Iqnh2SSASPPUwToYn6bk/8AeU3z6HjhShsshgD7J7yqgD8e
g0NeJ2/zPfDLFry15joMCNzTXgNVmeLY6hA+169T16CZty3Rl4iAM2wAADp2+gmu
6xeHV1111qzsNsWEycS+Os/x/oTZlUHPSq6kqTrRBPaL1N6EZTpZwsPWnIC3b0Mp
4eiCm68oHZB0BluTWKeFisOGKtokesjhfSi4qQj7HtMOmpPpuCzHyTdi3WvVWGrH
Tp0MxYNIycrTj2RtiBNmTXkZFRWu2llHUrX03MnDblpytudBhy79InVsG0WXG7wz
hgUb17vl6zn51IoynRfd7ibbMbO8Q+HcShPQ8/lOfkh1vZbH52Hdt7l4d+BVEROq
E91WvTYHrbTCeIgdavilLoFyKf2Gx+09f1LEqG6aevyUCceJz+HF1oysuzKbb9FH
ZR2E84li1ZNbudKD1MpibyZiL8q0WZNj1seVj9NyiIiTBO+mo3IiUJ65m1rmOvTc
8xASSd95EQE9cza1zHXpueYgIiIEglTsEg/KCSTs9ZEQJ3rtEiIExvfeRECd9NRu
RECQddpERA9BmXsSPoZEiICb3vxqcN6cdmcv3LDtMETNmhJLE62SddpETQnvAYjs
SPpIiBO+mpsxcin8K+PfzKrHfMsxRJZo6NV2Jh8z0M9lhGhsaE55OzsyIkkweuZt
a5jr03PMRNBERA//2Q==

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=jquery.bgiframe.js
Content-Type: application/x-javascript; charset=iso-8859-2; name=jquery.bgiframe.js
Content-Location: http://www.spoj.pl/gfx/jquery.bgiframe.js
Content-Transfer-Encoding: Base64

LyogQ29weXJpZ2h0IChjKSAyMDA2IEJyYW5kb24gQWFyb24gKGh0dHA6Ly9icmFu
ZG9uYWFyb24ubmV0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKGh0
dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhw
KSAKICogYW5kIEdQTCAoaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNl
cy9ncGwtbGljZW5zZS5waHApIGxpY2Vuc2VzLgogKgogKiAkTGFzdENoYW5nZWRE
YXRlOiAyMDA3LTA2LTIwIDAzOjIzOjM2ICswMjAwIChNaSwgMjAgSnVuIDIwMDcp
ICQKICogJFJldjogMjExMCAkCiAqCiAqIFZlcnNpb24gMi4xCiAqLwoKKGZ1bmN0
aW9uKCQpewoKLyoqCiAqIFRoZSBiZ2lmcmFtZSBpcyBjaGFpbmFibGUgYW5kIGFw
cGxpZXMgdGhlIGlmcmFtZSBoYWNrIHRvIGdldCAKICogYXJvdW5kIHpJbmRleCBp
c3N1ZXMgaW4gSUU2LiBJdCB3aWxsIG9ubHkgYXBwbHkgaXRzZWxmIGluIElFIAog
KiBhbmQgYWRkcyBhIGNsYXNzIHRvIHRoZSBpZnJhbWUgY2FsbGVkICdiZ2lmcmFt
ZScuIFRoZSBpZnJhbWUKICogaXMgYXBwZW5lZGVkIGFzIHRoZSBmaXJzdCBjaGls
ZCBvZiB0aGUgbWF0Y2hlZCBlbGVtZW50KHMpIAogKiB3aXRoIGEgdGFiSW5kZXgg
YW5kIHpJbmRleCBvZiAtMS4KICogCiAqIEJ5IGRlZmF1bHQgdGhlIHBsdWdpbiB3
aWxsIHRha2UgYm9yZGVycywgc2l6ZWQgd2l0aCBwaXhlbCB1bml0cywKICogaW50
byBhY2NvdW50LiBJZiBhIGRpZmZlcmVudCB1bml0IGlzIHVzZWQgZm9yIHRoZSBi
b3JkZXIncyB3aWR0aCwKICogdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIHVzZSB0aGUg
dG9wIGFuZCBsZWZ0IHNldHRpbmdzIGFzIGV4cGxhaW5lZCBiZWxvdy4KICoKICog
Tk9USUNFOiBUaGlzIHBsdWdpbiBoYXMgYmVlbiByZXBvcnRlZCB0byBjYXVzZSBw
ZXJmcm9tYW5jZSBwcm9ibGVtcwogKiB3aGVuIHVzZWQgb24gZWxlbWVudHMgdGhh
dCBjaGFuZ2UgcHJvcGVydGllcyAobGlrZSB3aWR0aCwgaGVpZ2h0IGFuZAogKiBv
cGFjaXR5KSBhIGxvdCBpbiBJRTYuIE1vc3Qgb2YgdGhlc2UgcHJvYmxlbXMgaGF2
ZSBiZWVuIGNhdXNlZCBieSAKICogdGhlIGV4cHJlc3Npb25zIHVzZWQgdG8gY2Fs
Y3VsYXRlIHRoZSBlbGVtZW50cyB3aWR0aCwgaGVpZ2h0IGFuZCAKICogYm9yZGVy
cy4gU29tZSBoYXZlIHJlcG9ydGVkIGl0IGlzIGR1ZSB0byB0aGUgb3BhY2l0eSBm
aWx0ZXIuIEFsbCAKICogdGhlc2Ugc2V0dGluZ3MgY2FuIGJlIGNoYW5nZWQgaWYg
bmVlZGVkIGFzIGV4cGxhaW5lZCBiZWxvdy4KICoKICogQGV4YW1wbGUgJCgnZGl2
JykuYmdpZnJhbWUoKTsKICogQGJlZm9yZSA8ZGl2PjxwPlBhcmFncmFwaDwvcD48
L2Rpdj4KICogQHJlc3VsdCA8ZGl2PjxpZnJhbWUgY2xhc3M9ImJnaWZyYW1lIi4u
Li8+PHA+UGFyYWdyYXBoPC9wPjwvZGl2PgogKgogKiBAcGFyYW0gTWFwIHNldHRp
bmdzIE9wdGlvbmFsIHNldHRpbmdzIHRvIGNvbmZpZ3VyZSB0aGUgaWZyYW1lLgog
KiBAb3B0aW9uIFN0cmluZ3xOdW1iZXIgdG9wIFRoZSBpZnJhbWUgbXVzdCBiZSBv
ZmZzZXQgdG8gdGhlIHRvcAogKiAJCWJ5IHRoZSB3aWR0aCBvZiB0aGUgdG9wIGJv
cmRlci4gVGhpcyBzaG91bGQgYmUgYSBuZWdhdGl2ZSAKICogICAgICBudW1iZXIg
cmVwcmVzZW50aW5nIHRoZSBib3JkZXItdG9wLXdpZHRoLiBJZiBhIG51bWJlciBp
cyAKICogCQlpcyB1c2VkIGhlcmUsIHBpeGVscyB3aWxsIGJlIGFzc3VtZWQuIE90
aGVyd2lzZSwgYmUgc3VyZQogKgkJdG8gc3BlY2lmeSBhIHVuaXQuIEFuIGV4cHJl
c3Npb24gY291bGQgYWxzbyBiZSB1c2VkLiAKICogCQlCeSBkZWZhdWx0IHRoZSB2
YWx1ZSBpcyAiYXV0byIgd2hpY2ggd2lsbCB1c2UgYW4gZXhwcmVzc2lvbiAKICog
CQl0byBnZXQgdGhlIGJvcmRlci10b3Atd2lkdGggaWYgaXQgaXMgaW4gcGl4ZWxz
LgogKiBAb3B0aW9uIFN0cmluZ3xOdW1iZXIgbGVmdCBUaGUgaWZyYW1lIG11c3Qg
YmUgb2Zmc2V0IHRvIHRoZSBsZWZ0CiAqIAkJYnkgdGhlIHdpZHRoIG9mIHRoZSBs
ZWZ0IGJvcmRlci4gVGhpcyBzaG91bGQgYmUgYSBuZWdhdGl2ZSAKICogICAgICBu
dW1iZXIgcmVwcmVzZW50aW5nIHRoZSBib3JkZXItbGVmdC13aWR0aC4gSWYgYSBu
dW1iZXIgaXMgCiAqIAkJaXMgdXNlZCBoZXJlLCBwaXhlbHMgd2lsbCBiZSBhc3N1
bWVkLiBPdGhlcndpc2UsIGJlIHN1cmUKICoJCXRvIHNwZWNpZnkgYSB1bml0LiBB
biBleHByZXNzaW9uIGNvdWxkIGFsc28gYmUgdXNlZC4gCiAqIAkJQnkgZGVmYXVs
dCB0aGUgdmFsdWUgaXMgImF1dG8iIHdoaWNoIHdpbGwgdXNlIGFuIGV4cHJlc3Np
b24gCiAqIAkJdG8gZ2V0IHRoZSBib3JkZXItbGVmdC13aWR0aCBpZiBpdCBpcyBp
biBwaXhlbHMuCiAqIEBvcHRpb24gU3RyaW5nfE51bWJlciB3aWR0aCBUaGlzIGlz
IHRoZSB3aWR0aCBvZiB0aGUgaWZyYW1lLiBJZgogKgkJYSBudW1iZXIgaXMgdXNl
ZCBoZXJlLCBwaXhlbHMgd2lsbCBiZSBhc3N1bWUuIE90aGVyd2lzZSwgYmUgc3Vy
ZQogKiAJCXRvIHNwZWNpZnkgYSB1bml0LiBBbiBleHBlcnNzaW9uIGNvdWxkIGFs
c28gYmUgdXNlZC4KICoJCUJ5IGRlZmF1bHQgdGhlIHZhbHVlIGlzICJhdXRvIiB3
aGljaCB3aWxsIHVzZSBhbiBleHBlcnNzaW9uCiAqIAkJdG8gZ2V0IHRoZSBvZmZz
ZXRXaWR0aC4KICogQG9wdGlvbiBTdHJpbmd8TnVtYmVyIGhlaWdodCBUaGlzIGlz
IHRoZSBoZWlnaHQgb2YgdGhlIGlmcmFtZS4gSWYKICoJCWEgbnVtYmVyIGlzIHVz
ZWQgaGVyZSwgcGl4ZWxzIHdpbGwgYmUgYXNzdW1lLiBPdGhlcndpc2UsIGJlIHN1
cmUKICogCQl0byBzcGVjaWZ5IGEgdW5pdC4gQW4gZXhwZXJzc2lvbiBjb3VsZCBh
bHNvIGJlIHVzZWQuCiAqCQlCeSBkZWZhdWx0IHRoZSB2YWx1ZSBpcyAiYXV0byIg
d2hpY2ggd2lsbCB1c2UgYW4gZXhwZXJzc2lvbgogKiAJCXRvIGdldCB0aGUgb2Zm
c2V0SGVpZ2h0LgogKiBAb3B0aW9uIEJvb2xlYW4gb3BhY2l0eSBUaGlzIGlzIGEg
Ym9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QKICogCQl0byB1c2Ug
b3BhY2l0eS4gSWYgc2V0IHRvIHRydWUsIHRoZSBvcGFjaXR5IG9mIDAgaXMgYXBw
bGllZC4gSWYKICoJCXNldCB0byBmYWxzZSwgdGhlIG9wYWNpdHkgZmlsdGVyIGlz
IG5vdCBhcHBsaWVkLiBEZWZhdWx0OiB0cnVlLgogKiBAb3B0aW9uIFN0cmluZyBz
cmMgVGhpcyBzZXR0aW5nIGlzIHByb3ZpZGVkIHNvIHRoYXQgb25lIGNvdWxkIGNo
YW5nZSAKICoJCXRoZSBzcmMgb2YgdGhlIGlmcmFtZSB0byB3aGF0ZXZlciB0aGV5
IG5lZWQuCiAqCQlEZWZhdWx0OiAiamF2YXNjcmlwdDpmYWxzZTsiCiAqCiAqIEBu
YW1lIGJnaWZyYW1lCiAqIEB0eXBlIGpRdWVyeQogKiBAY2F0IFBsdWdpbnMvYmdp
ZnJhbWUKICogQGF1dGhvciBCcmFuZG9uIEFhcm9uIChicmFuZG9uLmFhcm9uQGdt
YWlsLmNvbSB8fCBodHRwOi8vYnJhbmRvbmFhcm9uLm5ldCkKICovCiQuZm4uYmdJ
ZnJhbWUgPSAkLmZuLmJnaWZyYW1lID0gZnVuY3Rpb24ocykgewoJLy8gVGhpcyBp
cyBvbmx5IGZvciBJRTYKCWlmICggJC5icm93c2VyLm1zaWUgJiYgcGFyc2VJbnQo
JC5icm93c2VyLnZlcnNpb24pIDw9IDYgKSB7CgkJcyA9ICQuZXh0ZW5kKHsKCQkJ
dG9wICAgICA6ICdhdXRvJywgLy8gYXV0byA9PSAuY3VycmVudFN0eWxlLmJvcmRl
clRvcFdpZHRoCgkJCWxlZnQgICAgOiAnYXV0bycsIC8vIGF1dG8gPT0gLmN1cnJl
bnRTdHlsZS5ib3JkZXJMZWZ0V2lkdGgKCQkJd2lkdGggICA6ICdhdXRvJywgLy8g
YXV0byA9PSBvZmZzZXRXaWR0aAoJCQloZWlnaHQgIDogJ2F1dG8nLCAvLyBhdXRv
ID09IG9mZnNldEhlaWdodAoJCQlvcGFjaXR5IDogdHJ1ZSwKCQkJc3JjICAgICA6
ICdqYXZhc2NyaXB0OmZhbHNlOycKCQl9LCBzIHx8IHt9KTsKCQl2YXIgcHJvcCA9
IGZ1bmN0aW9uKG4pe3JldHVybiBuJiZuLmNvbnN0cnVjdG9yPT1OdW1iZXI/bisn
cHgnOm47fSwKCQkgICAgaHRtbCA9ICc8aWZyYW1lIGNsYXNzPSJiZ2lmcmFtZSJm
cmFtZWJvcmRlcj0iMCJ0YWJpbmRleD0iLTEic3JjPSInK3Muc3JjKyciJysKCQkg
ICAgICAgICAgICAgICAnc3R5bGU9ImRpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJz
b2x1dGU7ei1pbmRleDotMTsnKwoJCQkgICAgICAgICAgICAgICAocy5vcGFjaXR5
ICE9PSBmYWxzZT8nZmlsdGVyOkFscGhhKE9wYWNpdHk9XCcwXCcpOyc6JycpKwoJ
CQkJCSAgICAgICAndG9wOicrKHMudG9wPT0nYXV0byc/J2V4cHJlc3Npb24oKChw
YXJzZUludCh0aGlzLnBhcmVudE5vZGUuY3VycmVudFN0eWxlLmJvcmRlclRvcFdp
ZHRoKXx8MCkqLTEpK1wncHhcJyknOnByb3Aocy50b3ApKSsnOycrCgkJCQkJICAg
ICAgICdsZWZ0OicrKHMubGVmdD09J2F1dG8nPydleHByZXNzaW9uKCgocGFyc2VJ
bnQodGhpcy5wYXJlbnROb2RlLmN1cnJlbnRTdHlsZS5ib3JkZXJMZWZ0V2lkdGgp
fHwwKSotMSkrXCdweFwnKSc6cHJvcChzLmxlZnQpKSsnOycrCgkJCQkJICAgICAg
ICd3aWR0aDonKyhzLndpZHRoPT0nYXV0byc/J2V4cHJlc3Npb24odGhpcy5wYXJl
bnROb2RlLm9mZnNldFdpZHRoK1wncHhcJyknOnByb3Aocy53aWR0aCkpKyc7JysK
CQkJCQkgICAgICAgJ2hlaWdodDonKyhzLmhlaWdodD09J2F1dG8nPydleHByZXNz
aW9uKHRoaXMucGFyZW50Tm9kZS5vZmZzZXRIZWlnaHQrXCdweFwnKSc6cHJvcChz
LmhlaWdodCkpKyc7JysKCQkJCQknIi8+JzsKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKCkgewoJCQlpZiAoICQoJz4gaWZyYW1lLmJnaWZyYW1lJywgdGhpcyku
bGVuZ3RoID09IDAgKQoJCQkJdGhpcy5pbnNlcnRCZWZvcmUoIGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoaHRtbCksIHRoaXMuZmlyc3RDaGlsZCApOwoJCX0pOwoJfQoJ
cmV0dXJuIHRoaXM7Cn07CgovLyBBZGQgYnJvd3Nlci52ZXJzaW9uIGlmIGl0IGRv
ZXNuJ3QgZXhpc3QKaWYgKCEkLmJyb3dzZXIudmVyc2lvbikKCSQuYnJvd3Nlci52
ZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNo
KC8uKyg/OnJ2fGl0fHJhfGllKVtcLzogXShbXGQuXSspLylbMV07Cgp9KShqUXVl
cnkpOw==

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=jquery.tooltip.js
Content-Type: application/x-javascript; charset=iso-8859-2; name=jquery.tooltip.js
Content-Location: http://www.spoj.pl/gfx/jquery.tooltip.js
Content-Transfer-Encoding: Base64

LyoKICogalF1ZXJ5IFRvb2x0aXAgcGx1Z2luIDEuMwogKgogKiBodHRwOi8vYmFz
c2lzdGFuY2UuZGUvanF1ZXJ5LXBsdWdpbnMvanF1ZXJ5LXBsdWdpbi10b29sdGlw
LwogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1BsdWdpbnMvVG9vbHRpcAogKgog
KiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDA4IErDtnJuIFphZWZmZXJlcgogKgog
KiAkSWQ6IGpxdWVyeS50b29sdGlwLmpzIDU3NDEgMjAwOC0wNi0yMSAxNToyMjox
Nlogam9lcm4uemFlZmZlcmVyICQKICogCiAqIER1YWwgbGljZW5zZWQgdW5kZXIg
dGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOgogKiAgIGh0dHA6Ly93d3cub3BlbnNv
dXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqICAgaHR0cDovL3d3
dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCiAqLwogCjsoZnVuY3Rpb24oJCkg
ewoJCgkJLy8gdGhlIHRvb2x0aXAgZWxlbWVudAoJdmFyIGhlbHBlciA9IHt9LAoJ
CS8vIHRoZSBjdXJyZW50IHRvb2x0aXBwZWQgZWxlbWVudAoJCWN1cnJlbnQsCgkJ
Ly8gdGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IGVsZW1lbnQsIHVzZWQgZm9yIHJl
c3RvcmluZwoJCXRpdGxlLAoJCS8vIHRpbWVvdXQgaWQgZm9yIGRlbGF5ZWQgdG9v
bHRpcHMKCQl0SUQsCgkJLy8gSUUgNS41IG9yIDYKCQlJRSA9ICQuYnJvd3Nlci5t
c2llICYmIC9NU0lFXHMoNVwuNXw2XC4pLy50ZXN0KG5hdmlnYXRvci51c2VyQWdl
bnQpLAoJCS8vIGZsYWcgZm9yIG1vdXNlIHRyYWNraW5nCgkJdHJhY2sgPSBmYWxz
ZTsKCQoJJC50b29sdGlwID0gewoJCWJsb2NrZWQ6IGZhbHNlLAoJCWRlZmF1bHRz
OiB7CgkJCWRlbGF5OiAyMDAsCgkJCWZhZGU6IGZhbHNlLAoJCQlzaG93VVJMOiB0
cnVlLAoJCQlleHRyYUNsYXNzOiAiIiwKCQkJdG9wOiAxNSwKCQkJbGVmdDogMTUs
CgkJCWlkOiAidG9vbHRpcCIKCQl9LAoJCWJsb2NrOiBmdW5jdGlvbigpIHsKCQkJ
JC50b29sdGlwLmJsb2NrZWQgPSAhJC50b29sdGlwLmJsb2NrZWQ7CgkJfQoJfTsK
CQoJJC5mbi5leHRlbmQoewoJCXRvb2x0aXA6IGZ1bmN0aW9uKHNldHRpbmdzKSB7
CgkJCXNldHRpbmdzID0gJC5leHRlbmQoe30sICQudG9vbHRpcC5kZWZhdWx0cywg
c2V0dGluZ3MpOwoJCQljcmVhdGVIZWxwZXIoc2V0dGluZ3MpOwoJCQlyZXR1cm4g
dGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJCSQuZGF0YSh0aGlzLCAidG9vbHRp
cCIsIHNldHRpbmdzKTsKCQkJCQl0aGlzLnRPcGFjaXR5ID0gaGVscGVyLnBhcmVu
dC5jc3MoIm9wYWNpdHkiKTsKCQkJCQkvLyBjb3B5IHRvb2x0aXAgaW50byBpdHMg
b3duIGV4cGFuZG8gYW5kIHJlbW92ZSB0aGUgdGl0bGUKCQkJCQl0aGlzLnRvb2x0
aXBUZXh0ID0gdGhpcy50aXRsZTsKCQkJCQkkKHRoaXMpLnJlbW92ZUF0dHIoInRp
dGxlIik7CgkJCQkJLy8gYWxzbyByZW1vdmUgYWx0IGF0dHJpYnV0ZSB0byBwcmV2
ZW50IGRlZmF1bHQgdG9vbHRpcCBpbiBJRQoJCQkJCXRoaXMuYWx0ID0gIiI7CgkJ
CQl9KQoJCQkJLm1vdXNlb3ZlcihzYXZlKQoJCQkJLm1vdXNlb3V0KGhpZGUpCgkJ
CQkuY2xpY2soaGlkZSk7CgkJfSwKCQlmaXhQTkc6IElFID8gZnVuY3Rpb24oKSB7
CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkgewoJCQkJdmFyIGltYWdl
ID0gJCh0aGlzKS5jc3MoJ2JhY2tncm91bmRJbWFnZScpOwoJCQkJaWYgKGltYWdl
Lm1hdGNoKC9edXJsXChbIiddPyguKlwucG5nKVsiJ10/XCkkL2kpKSB7CgkJCQkJ
aW1hZ2UgPSBSZWdFeHAuJDE7CgkJCQkJJCh0aGlzKS5jc3MoewoJCQkJCQknYmFj
a2dyb3VuZEltYWdlJzogJ25vbmUnLAoJCQkJCQknZmlsdGVyJzogInByb2dpZDpE
WEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYUltYWdlTG9hZGVyKGVuYWJs
ZWQ9dHJ1ZSwgc2l6aW5nTWV0aG9kPWNyb3AsIHNyYz0nIiArIGltYWdlICsgIicp
IgoJCQkJCX0pLmVhY2goZnVuY3Rpb24gKCkgewoJCQkJCQl2YXIgcG9zaXRpb24g
PSAkKHRoaXMpLmNzcygncG9zaXRpb24nKTsKCQkJCQkJaWYgKHBvc2l0aW9uICE9
ICdhYnNvbHV0ZScgJiYgcG9zaXRpb24gIT0gJ3JlbGF0aXZlJykKCQkJCQkJCSQo
dGhpcykuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwoJCQkJCX0pOwoJCQkJ
fQoJCQl9KTsKCQl9IDogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9LAoJCXVu
Zml4UE5HOiBJRSA/IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uICgpIHsKCQkJCSQodGhpcykuY3NzKHsnZmlsdGVyJzogJycsIGJhY2tn
cm91bmRJbWFnZTogJyd9KTsKCQkJfSk7CgkJfSA6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gdGhpczsgfSwKCQloaWRlV2hlbkVtcHR5OiBmdW5jdGlvbigpIHsKCQkJcmV0
dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKCQkJCSQodGhpcylbICQodGhpcyku
aHRtbCgpID8gInNob3ciIDogImhpZGUiIF0oKTsKCQkJfSk7CgkJfSwKCQl1cmw6
IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5hdHRyKCdocmVmJykgfHwgdGhp
cy5hdHRyKCdzcmMnKTsKCQl9Cgl9KTsKCQoJZnVuY3Rpb24gY3JlYXRlSGVscGVy
KHNldHRpbmdzKSB7CgkJLy8gdGhlcmUgY2FuIGJlIG9ubHkgb25lIHRvb2x0aXAg
aGVscGVyCgkJaWYoIGhlbHBlci5wYXJlbnQgKQoJCQlyZXR1cm47CgkJLy8gY3Jl
YXRlIHRoZSBoZWxwZXIsIGgzIGZvciB0aXRsZSwgZGl2IGZvciB1cmwKCQloZWxw
ZXIucGFyZW50ID0gJCgnPGRpdiBpZD0iJyArIHNldHRpbmdzLmlkICsgJyI+PGgz
PjwvaDM+PGRpdiBjbGFzcz0iYm9keSI+PC9kaXY+PGRpdiBjbGFzcz0idXJsIj48
L2Rpdj48L2Rpdj4nKQoJCQkvLyBhZGQgdG8gZG9jdW1lbnQKCQkJLmFwcGVuZFRv
KGRvY3VtZW50LmJvZHkpCgkJCS8vIGhpZGUgaXQgYXQgZmlyc3QKCQkJLmhpZGUo
KTsKCQkJCgkJLy8gYXBwbHkgYmdpZnJhbWUgaWYgYXZhaWxhYmxlCgkJaWYgKCAk
LmZuLmJnaWZyYW1lICkKCQkJaGVscGVyLnBhcmVudC5iZ2lmcmFtZSgpOwoJCQoJ
CS8vIHNhdmUgcmVmZXJlbmNlcyB0byB0aXRsZSBhbmQgdXJsIGVsZW1lbnRzCgkJ
aGVscGVyLnRpdGxlID0gJCgnaDMnLCBoZWxwZXIucGFyZW50KTsKCQloZWxwZXIu
Ym9keSA9ICQoJ2Rpdi5ib2R5JywgaGVscGVyLnBhcmVudCk7CgkJaGVscGVyLnVy
bCA9ICQoJ2Rpdi51cmwnLCBoZWxwZXIucGFyZW50KTsKCX0KCQoJZnVuY3Rpb24g
c2V0dGluZ3MoZWxlbWVudCkgewoJCXJldHVybiAkLmRhdGEoZWxlbWVudCwgInRv
b2x0aXAiKTsKCX0KCQoJLy8gbWFpbiBldmVudCBoYW5kbGVyIHRvIHN0YXJ0IHNo
b3dpbmcgdG9vbHRpcHMKCWZ1bmN0aW9uIGhhbmRsZShldmVudCkgewoJCS8vIHNo
b3cgaGVscGVyLCBlaXRoZXIgd2l0aCB0aW1lb3V0IG9yIG9uIGluc3RhbnQKCQlp
Ziggc2V0dGluZ3ModGhpcykuZGVsYXkgKQoJCQl0SUQgPSBzZXRUaW1lb3V0KHNo
b3csIHNldHRpbmdzKHRoaXMpLmRlbGF5KTsKCQllbHNlCgkJCXNob3coKTsKCQkK
CQkvLyBpZiBzZWxlY3RlZCwgdXBkYXRlIHRoZSBoZWxwZXIgcG9zaXRpb24gd2hl
biB0aGUgbW91c2UgbW92ZXMKCQl0cmFjayA9ICEhc2V0dGluZ3ModGhpcykudHJh
Y2s7CgkJJChkb2N1bWVudC5ib2R5KS5iaW5kKCdtb3VzZW1vdmUnLCB1cGRhdGUp
OwoJCQkKCQkvLyB1cGRhdGUgYXQgbGVhc3Qgb25jZQoJCXVwZGF0ZShldmVudCk7
Cgl9CgkKCS8vIHNhdmUgZWxlbWVudHMgdGl0bGUgYmVmb3JlIHRoZSB0b29sdGlw
IGlzIGRpc3BsYXllZAoJZnVuY3Rpb24gc2F2ZSgpIHsKCQkvLyBpZiB0aGlzIGlz
IHRoZSBjdXJyZW50IHNvdXJjZSwgb3IgaXQgaGFzIG5vIHRpdGxlIChvY2N1cnMg
d2l0aCBjbGljayBldmVudCksIHN0b3AKCQlpZiAoICQudG9vbHRpcC5ibG9ja2Vk
IHx8IHRoaXMgPT0gY3VycmVudCB8fCAoIXRoaXMudG9vbHRpcFRleHQgJiYgIXNl
dHRpbmdzKHRoaXMpLmJvZHlIYW5kbGVyKSApCgkJCXJldHVybjsKCgkJLy8gc2F2
ZSBjdXJyZW50CgkJY3VycmVudCA9IHRoaXM7CgkJdGl0bGUgPSB0aGlzLnRvb2x0
aXBUZXh0OwoJCQoJCWlmICggc2V0dGluZ3ModGhpcykuYm9keUhhbmRsZXIgKSB7
CgkJCWhlbHBlci50aXRsZS5oaWRlKCk7CgkJCXZhciBib2R5Q29udGVudCA9IHNl
dHRpbmdzKHRoaXMpLmJvZHlIYW5kbGVyLmNhbGwodGhpcyk7CgkJCWlmIChib2R5
Q29udGVudC5ub2RlVHlwZSB8fCBib2R5Q29udGVudC5qcXVlcnkpIHsKCQkJCWhl
bHBlci5ib2R5LmVtcHR5KCkuYXBwZW5kKGJvZHlDb250ZW50KQoJCQl9IGVsc2Ug
ewoJCQkJaGVscGVyLmJvZHkuaHRtbCggYm9keUNvbnRlbnQgKTsKCQkJfQoJCQlo
ZWxwZXIuYm9keS5zaG93KCk7CgkJfSBlbHNlIGlmICggc2V0dGluZ3ModGhpcyku
c2hvd0JvZHkgKSB7CgkJCXZhciBwYXJ0cyA9IHRpdGxlLnNwbGl0KHNldHRpbmdz
KHRoaXMpLnNob3dCb2R5KTsKCQkJaGVscGVyLnRpdGxlLmh0bWwocGFydHMuc2hp
ZnQoKSkuc2hvdygpOwoJCQloZWxwZXIuYm9keS5lbXB0eSgpOwoJCQlmb3IodmFy
IGkgPSAwLCBwYXJ0OyAocGFydCA9IHBhcnRzW2ldKTsgaSsrKSB7CgkJCQlpZihp
ID4gMCkKCQkJCQloZWxwZXIuYm9keS5hcHBlbmQoIjxici8+Iik7CgkJCQloZWxw
ZXIuYm9keS5hcHBlbmQocGFydCk7CgkJCX0KCQkJaGVscGVyLmJvZHkuaGlkZVdo
ZW5FbXB0eSgpOwoJCX0gZWxzZSB7CgkJCWhlbHBlci50aXRsZS5odG1sKHRpdGxl
KS5zaG93KCk7CgkJCWhlbHBlci5ib2R5LmhpZGUoKTsKCQl9CgkJCgkJLy8gaWYg
ZWxlbWVudCBoYXMgaHJlZiBvciBzcmMsIGFkZCBhbmQgc2hvdyBpdCwgb3RoZXJ3
aXNlIGhpZGUgaXQKCQlpZiggc2V0dGluZ3ModGhpcykuc2hvd1VSTCAmJiAkKHRo
aXMpLnVybCgpICkKCQkJaGVscGVyLnVybC5odG1sKCAkKHRoaXMpLnVybCgpLnJl
cGxhY2UoJ2h0dHA6Ly8nLCAnJykgKS5zaG93KCk7CgkJZWxzZSAKCQkJaGVscGVy
LnVybC5oaWRlKCk7CgkJCgkJLy8gYWRkIGFuIG9wdGlvbmFsIGNsYXNzIGZvciB0
aGlzIHRpcAoJCWhlbHBlci5wYXJlbnQuYWRkQ2xhc3Moc2V0dGluZ3ModGhpcyku
ZXh0cmFDbGFzcyk7CgoJCS8vIGZpeCBQTkcgYmFja2dyb3VuZCBmb3IgSUUKCQlp
ZiAoc2V0dGluZ3ModGhpcykuZml4UE5HICkKCQkJaGVscGVyLnBhcmVudC5maXhQ
TkcoKTsKCQkJCgkJaGFuZGxlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cgl9CgkK
CS8vIGRlbGV0ZSB0aW1lb3V0IGFuZCBzaG93IGhlbHBlcgoJZnVuY3Rpb24gc2hv
dygpIHsKCQl0SUQgPSBudWxsOwoJCWlmICgoIUlFIHx8ICEkLmZuLmJnaWZyYW1l
KSAmJiBzZXR0aW5ncyhjdXJyZW50KS5mYWRlKSB7CgkJCWlmIChoZWxwZXIucGFy
ZW50LmlzKCI6YW5pbWF0ZWQiKSkKCQkJCWhlbHBlci5wYXJlbnQuc3RvcCgpLnNo
b3coKS5mYWRlVG8oc2V0dGluZ3MoY3VycmVudCkuZmFkZSwgY3VycmVudC50T3Bh
Y2l0eSk7CgkJCWVsc2UKCQkJCWhlbHBlci5wYXJlbnQuaXMoJzp2aXNpYmxlJykg
PyBoZWxwZXIucGFyZW50LmZhZGVUbyhzZXR0aW5ncyhjdXJyZW50KS5mYWRlLCBj
dXJyZW50LnRPcGFjaXR5KSA6IGhlbHBlci5wYXJlbnQuZmFkZUluKHNldHRpbmdz
KGN1cnJlbnQpLmZhZGUpOwoJCX0gZWxzZSB7CgkJCWhlbHBlci5wYXJlbnQuc2hv
dygpOwoJCX0KCQl1cGRhdGUoKTsKCX0KCQoJLyoqCgkgKiBjYWxsYmFjayBmb3Ig
bW91c2Vtb3ZlCgkgKiB1cGRhdGVzIHRoZSBoZWxwZXIgcG9zaXRpb24KCSAqIHJl
bW92ZXMgaXRzZWxmIHdoZW4gbm8gY3VycmVudCBlbGVtZW50CgkgKi8KCWZ1bmN0
aW9uIHVwZGF0ZShldmVudCkJewoJCWlmKCQudG9vbHRpcC5ibG9ja2VkKQoJCQly
ZXR1cm47CgkJCgkJaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldC50YWdOYW1lID09
ICJPUFRJT04iKSB7CgkJCXJldHVybjsKCQl9CgkJCgkJLy8gc3RvcCB1cGRhdGlu
ZyB3aGVuIHRyYWNraW5nIGlzIGRpc2FibGVkIGFuZCB0aGUgdG9vbHRpcCBpcyB2
aXNpYmxlCgkJaWYgKCAhdHJhY2sgJiYgaGVscGVyLnBhcmVudC5pcygiOnZpc2li
bGUiKSkgewoJCQkkKGRvY3VtZW50LmJvZHkpLnVuYmluZCgnbW91c2Vtb3ZlJywg
dXBkYXRlKQoJCX0KCQkKCQkvLyBpZiBubyBjdXJyZW50IGVsZW1lbnQgaXMgYXZh
aWxhYmxlLCByZW1vdmUgdGhpcyBsaXN0ZW5lcgoJCWlmKCBjdXJyZW50ID09IG51
bGwgKSB7CgkJCSQoZG9jdW1lbnQuYm9keSkudW5iaW5kKCdtb3VzZW1vdmUnLCB1
cGRhdGUpOwoJCQlyZXR1cm47CQoJCX0KCQkKCQkvLyByZW1vdmUgcG9zaXRpb24g
aGVscGVyIGNsYXNzZXMKCQloZWxwZXIucGFyZW50LnJlbW92ZUNsYXNzKCJ2aWV3
cG9ydC1yaWdodCIpLnJlbW92ZUNsYXNzKCJ2aWV3cG9ydC1ib3R0b20iKTsKCQkK
CQl2YXIgbGVmdCA9IGhlbHBlci5wYXJlbnRbMF0ub2Zmc2V0TGVmdDsKCQl2YXIg
dG9wID0gaGVscGVyLnBhcmVudFswXS5vZmZzZXRUb3A7CgkJaWYgKGV2ZW50KSB7
CgkJCS8vIHBvc2l0aW9uIHRoZSBoZWxwZXIgMTUgcGl4ZWwgdG8gYm90dG9tIHJp
Z2h0LCBzdGFydGluZyBmcm9tIG1vdXNlIHBvc2l0aW9uCgkJCWxlZnQgPSBldmVu
dC5wYWdlWCArIHNldHRpbmdzKGN1cnJlbnQpLmxlZnQ7CgkJCXRvcCA9IGV2ZW50
LnBhZ2VZICsgc2V0dGluZ3MoY3VycmVudCkudG9wOwoJCQl2YXIgcmlnaHQ9J2F1
dG8nOwoJCQlpZiAoc2V0dGluZ3MoY3VycmVudCkucG9zaXRpb25MZWZ0KSB7CgkJ
CQlyaWdodCA9ICQod2luZG93KS53aWR0aCgpIC0gbGVmdDsKCQkJCWxlZnQgPSAn
YXV0byc7CgkJCX0KCQkJaGVscGVyLnBhcmVudC5jc3MoewoJCQkJbGVmdDogbGVm
dCwKCQkJCXJpZ2h0OiByaWdodCwKCQkJCXRvcDogdG9wCgkJCX0pOwoJCX0KCQkK
CQl2YXIgdiA9IHZpZXdwb3J0KCksCgkJCWggPSBoZWxwZXIucGFyZW50WzBdOwoJ
CS8vIGNoZWNrIGhvcml6b250YWwgcG9zaXRpb24KCQlpZiAodi54ICsgdi5jeCA8
IGgub2Zmc2V0TGVmdCArIGgub2Zmc2V0V2lkdGgpIHsKCQkJbGVmdCAtPSBoLm9m
ZnNldFdpZHRoICsgMjAgKyBzZXR0aW5ncyhjdXJyZW50KS5sZWZ0OwoJCQloZWxw
ZXIucGFyZW50LmNzcyh7bGVmdDogbGVmdCArICdweCd9KS5hZGRDbGFzcygidmll
d3BvcnQtcmlnaHQiKTsKCQl9CgkJLy8gY2hlY2sgdmVydGljYWwgcG9zaXRpb24K
CQlpZiAodi55ICsgdi5jeSA8IGgub2Zmc2V0VG9wICsgaC5vZmZzZXRIZWlnaHQp
IHsKCQkJdG9wIC09IGgub2Zmc2V0SGVpZ2h0ICsgMjAgKyBzZXR0aW5ncyhjdXJy
ZW50KS50b3A7CgkJCWhlbHBlci5wYXJlbnQuY3NzKHt0b3A6IHRvcCArICdweCd9
KS5hZGRDbGFzcygidmlld3BvcnQtYm90dG9tIik7CgkJfQoJfQoJCglmdW5jdGlv
biB2aWV3cG9ydCgpIHsKCQlyZXR1cm4gewoJCQl4OiAkKHdpbmRvdykuc2Nyb2xs
TGVmdCgpLAoJCQl5OiAkKHdpbmRvdykuc2Nyb2xsVG9wKCksCgkJCWN4OiAkKHdp
bmRvdykud2lkdGgoKSwKCQkJY3k6ICQod2luZG93KS5oZWlnaHQoKQoJCX07Cgl9
CgkKCS8vIGhpZGUgaGVscGVyIGFuZCByZXN0b3JlIGFkZGVkIGNsYXNzZXMgYW5k
IHRoZSB0aXRsZQoJZnVuY3Rpb24gaGlkZShldmVudCkgewoJCWlmKCQudG9vbHRp
cC5ibG9ja2VkKQoJCQlyZXR1cm47CgkJLy8gY2xlYXIgdGltZW91dCBpZiBwb3Nz
aWJsZQoJCWlmKHRJRCkKCQkJY2xlYXJUaW1lb3V0KHRJRCk7CgkJLy8gbm8gbW9y
ZSBjdXJyZW50IGVsZW1lbnQKCQljdXJyZW50ID0gbnVsbDsKCQkKCQl2YXIgdHNl
dHRpbmdzID0gc2V0dGluZ3ModGhpcyk7CgkJZnVuY3Rpb24gY29tcGxldGUoKSB7
CgkJCWhlbHBlci5wYXJlbnQucmVtb3ZlQ2xhc3MoIHRzZXR0aW5ncy5leHRyYUNs
YXNzICkuaGlkZSgpLmNzcygib3BhY2l0eSIsICIiKTsKCQl9CgkJaWYgKCghSUUg
fHwgISQuZm4uYmdpZnJhbWUpICYmIHRzZXR0aW5ncy5mYWRlKSB7CgkJCWlmICho
ZWxwZXIucGFyZW50LmlzKCc6YW5pbWF0ZWQnKSkKCQkJCWhlbHBlci5wYXJlbnQu
c3RvcCgpLmZhZGVUbyh0c2V0dGluZ3MuZmFkZSwgMCwgY29tcGxldGUpOwoJCQll
bHNlCgkJCQloZWxwZXIucGFyZW50LnN0b3AoKS5mYWRlT3V0KHRzZXR0aW5ncy5m
YWRlLCBjb21wbGV0ZSk7CgkJfSBlbHNlCgkJCWNvbXBsZXRlKCk7CgkJCgkJaWYo
IHNldHRpbmdzKHRoaXMpLmZpeFBORyApCgkJCWhlbHBlci5wYXJlbnQudW5maXhQ
TkcoKTsKCX0KCQp9KShqUXVlcnkpOwo=

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=jquery.cxhelp.js
Content-Type: application/x-javascript; charset=iso-8859-2; name=jquery.cxhelp.js
Content-Location: http://www.spoj.pl/gfx/jquery.cxhelp.js
Content-Transfer-Encoding: Base64

CSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCSAkKCJhW2lkKj1jeF9d
LmN4aGVscCIpLmVhY2goZnVuY3Rpb24oKSB7CgkJCSQodGhpcykudG9vbHRpcCh7
CgkJCQl0cmFjazogdHJ1ZSwgCgkJCSAgICBkZWxheTogMCwgCgkJCSAgICBzaG93
VVJMOiBmYWxzZSwgIAoJCQkgICAgZmFkZTogMTAwLAoJCQkgICAgYm9keUhhbmRs
ZXI6IGZ1bmN0aW9uKCkgeyAKCQkJICAgICAgICByZXR1cm4gJCgiI2hfIiArICQo
dGhpcykuYXR0cigiaWQiKS5zdWJzdHIoMykpLmh0bWwoKTsKCQkJICAgIH0KCQkg
CX0pOwoJCQkkKHRoaXMpLnRleHQoIj8iKTsKCQkgfSk7CgoJCSQoIltpZCo9Y3hf
XS5jeGhlbHAyIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgJCh0aGlzKS50b29sdGlwKHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cmFjazogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlbGF5OiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VSTDog
ZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRlOiAxMDAsCgkJ
CSAgICBpZDogInRvb2x0aXAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvZHlIYW5kbGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gJCgiI2hfIiArICQodGhpcykuYXR0cigiaWQiKS5z
dWJzdHIoMykpLmh0bWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSk7
Cgl9KTsK

------------O8tSTdebgUpFsTdPeOUg4a
Content-Disposition: inline; filename=rss10x10.gif
Content-Type: image/gif; name=rss10x10.gif
Content-Location: http://www.spoj.pl/gfx/rss10x10.gif
Content-Transfer-Encoding: Base64

R0lGODlhCgAKAMQbANBwMP+AIOCAMOCAQP+wcP+QQOCQUP/g4OBwMOCAUOCgYNBg
QP/QsP+gUOCQYP+gYP+QIP+QUP+ggOCwkP/AgP+AMOBwQOBwIOCQQP/AoP/QoP//
///g0P/AkP//4P+QMCH5BAAAAAAALAAAAAAKAAoAAAVL4OEMA2YYmMI5iBRVwfdB
ymBsm0dAMjYIjQZj0wlUSI0N50HZEC6lz2P40HgQtg9FyLk5LJhkJrIxeCYABeRR
QLASiwSnRrJYAPIQADs=

------------O8tSTdebgUpFsTdPeOUg4a--
